大家好:
它 println 出的最後一行是 "null"
請問為什麼? try{
File file=new File("list.txt");
LineNumberReader linereader = new LineNumberReader(new FileReader(file));
try{
String str=linereader.readLine();
    System.out.println(str);
        while(str != null){
str=linereader.readLine();
    System.out.println(str);      
    } //end while
        
}catch(IOException io){} }catch(FileNotFoundException f){}

解决方案 »

  1.   

    楼主多读取了一行,自然就读出null了,改成这样就不会了(顺便帮楼主把程序代码做了一些优化):public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub try {
    File file = new File("D:\\temp\\list.txt");
    LineNumberReader linereader = new LineNumberReader(new FileReader(file));
    // String str = linereader.readLine();
    // System.out.println(str);
    String str = "";
    while ((str = linereader.readLine()) != null) {
    // str = linereader.readLine();
    System.out.println(str);
    } // end while
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}
      

  2.   

    LineNumberReader 实际上就是一个多了行号的 BufferedReader,
    一行一行地读用 BufferedReader 足够了。改了一下,把 str 的作用范围再缩小,呵呵。for(String str = null; (str = linereader.readLine()) != null; ) {
        System.out.println(str);
    }