我想用BufferedReader读取c盘下一个txt文件,但是总不能读取完整,一共1w+行,但是只能读取5k+行,不知道为什么?
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;public class TestIO {
public static void main(String[] args)throws Exception{
List lineString=new ArrayList<String>();//存储文本每一行数据
List lineArr=new ArrayList<String []>();
int counter=0;//记录读取文件行数 
//读取文本数据
//先建立一个文件对象,再建立一个缓冲读取器,封装对文本文件读取器,这样的读取器可以解决DataInputStream读取器读取中文乱码的问题
File file=new File("c:/20100920.txt");
BufferedReader in=new BufferedReader(new FileReader(file));
BufferedWriter out=new BufferedWriter(new FileWriter("c:/test.txt"));
while(in.read()!=-1){
String firstName=in.readLine();
System.out.println(in.readLine());
//解析每一行文本
String []a=firstName.split(",");
lineArr.add(a);
counter++;
}
in.close();
System.out.println(counter);
System.out.println("counter=="+counter);  
}
}

解决方案 »

  1.   


          String firstName = "";
            while((firstName  = in.read())!=-1){
                //String firstName=in.readLine();
                System.out.println(in.readLine());
                //解析每一行文本
                String []a=firstName.split(",");
                lineArr.add(a);
                counter++;    
            }
      

  2.   

    明白了,谢谢!
    readLine()调用了两次
    但是用in.read()!=-1会使第一个字符丢失,所以我这样改了
    String firstname=null;
    while((firstname=in.readLine())!=null){
    System.out.println(firstname);
    }