用BufferedReader读取数据时,如果行数过多,br.readLine()则会抛出异常,有什么办法能解决此问题代码如下
str = br.readLine() 这里抛的异常,把文件里数据删减了一些,就可以读取BufferedReader br = null;
InputStreamReader isr = null;
BufferedWriter bw = null;
StringBuffer line = new StringBuffer();
String str = "";
// OutputStreamWriter osw = null;
try { isr = new InputStreamReader(is, "utf-8"); // osw = new OutputStreamWriter(fos, "utf-8");
br = new BufferedReader(isr);
// bw = new BufferedWriter(osw);

while ( (str = br.readLine()) != null) {
line.append(str);
// System.out.println("str:"+str);
line.append("\n");
}
System.out.println("line:" + line);
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    有好几百行数据,抛的异常就是readline这块的,行数少可以正常读取,多了就不行了at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.BufferedReader.fill(BufferedReader.java:136)
    at java.io.BufferedReader.readLine(BufferedReader.java:299)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
      

  2.   

    while ( (str = br.readLine()) != null) //这能有什么问题呢?
      

  3.   

    具体的是哪个类型的Exception呢
    几百行肯定没有问题的 BufferedReader reader = new BufferedReader(new FileReader("E:/oraparam.ini"));
        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }里面有1000多行数据
      

  4.   

    多半是内存溢出吧我想,你读取文件然后用StringBuffer缓存起来,然而文件太大,超过了JVM的老年代的内存,这样就内存溢出了吧。当然这是我的猜测,还要看看你的具体异常是不是OutOfMemary啦