当前位置: 技术问答>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.....代码,总是输出同一个一个行号数字
请大家帮助解决这个小小问题,看看我代码里哪里有问题,我正在疑惑当中。。
谢谢大家
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){
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();
}
...
...
public void writeStreamToFile(){
for(int i=vecwithlinenum.size()-1;i>=0;i--){
pw.println( (String)(vecwithlinenum.elementAt(i)) );
}
pw.flush();
}
...
|
改一下可以的,我编译过