当前位置:  技术问答>java相关

请大家该出手时就出手,一个关于LineNumberReader的小小问题,

    来源: 互联网  发布时间:2015-04-28

    本文导语:  源代码如下: import java.io.*; import java.util.*; public class E1  { private BufferedReader br; private LineNumberReader lnr; private Vector vec; private Vector vecwithlinenum; private PrintWriter pw; //constructor1 E1(String str){ vec=new Vector(); ...

源代码如下:
import java.io.*;
import java.util.*;

public class E1 
{
private BufferedReader br;
private LineNumberReader lnr;
private Vector vec;
private Vector vecwithlinenum;
private PrintWriter pw;

//constructor1
E1(String str){
vec=new Vector();
vecwithlinenum=new Vector();
try{
lnr=new LineNumberReader(new FileReader(str));
br=new BufferedReader(lnr);
}catch(FileNotFoundException e){
e.printStackTrace();
}
}
//constructor2
E1(String str1,String str2){
this(str1);
try{
pw=new PrintWriter(new BufferedWriter(new FileWriter(str2)));
}catch(IOException e){
}
}

public void readFile(){
String s;
try{
while((s=br.readLine())!=null){
vec.addElement(s);
}
br.close();
}catch(IOException e){
}
}

public void readFileWithLinenumber(){
String s;
try{
while((s=br.readLine())!=null){
vecwithlinenum.addElement(String.valueOf(lnr.getLineNumber())+":"+s);//这里出问题了!!!
//System.out.println(lnr.getLineNumber()+":"+s);
}
br.close();
}catch(IOException e){
}
}

public void printFileToScreen(){
for(int i=vec.size()-1;i>=0;i--){
System.out.println( (String)(vec.elementAt(i)) );
}
}

public void writeStreamToFile(){
for(int i=vecwithlinenum.size()-1;i>=0;i--){
pw.println( (String)(vecwithlinenum.elementAt(i)) );
}
}
public static void main(String[] args) 
{
if(args.length==1){
E1 e1=new E1(args[0]);
e1.readFile();
e1.printFileToScreen();
}else if(args.length==2){
E1 e1=new E1(args[0],args[1]);
e1.readFileWithLinenumber();
//e1.writeStreamToFile();
}else
return;
}
}
这是Thinking in java 第10章的一个习题3,
在我要往集合里添加带行号的String时,好像getLineNumber()不工作似的,并且加上下面的System.out.....代码,总是输出同一个一个行号数字
请大家帮助解决这个小小问题,看看我代码里哪里有问题,我正在疑惑当中。。
谢谢大家

|
public void readFileWithLinenumber() 中
while((s=br.readLine())!=null){
改为
while((s=lnr.readLine())!=null){

|
slientlamb 兄说的不错, 不过要写入文件2,还需要flush 一下,

...
public void writeStreamToFile(){
for(int i=vecwithlinenum.size()-1;i>=0;i--){
pw.println( (String)(vecwithlinenum.elementAt(i)) );
}
         pw.flush();
}
...

|
改一下可以的,我编译过

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sqlserver iis7站长之家
  • 高手请出手!!!!!!!!!
  • 大麻烦,请各位大虾出手相救
  • (100分求助)用内核线程对用户进程操作(大侠/虾们出手了)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3