1

次のコードを使用して、テキスト ファイルの最初の 6 行を読み込んでいます。

File finish = new File("C:/ABC Statements final/");
        File[] finf = finish.listFiles();
        String[] filenames1 = finish.list();
        LineNumberReader br = null;  
        PrintWriter bw = null;  
        for (int k = 0; k < filenames1.length; k++) {
            try {
            br = new LineNumberReader(new FileReader(new File("C:/ABC Statements final/" + filenames1[k])));  
            String line = br.readLine();  

            while (line != null && br.getLineNumber() <= 6 ) {   
                line = br.readLine();  
                System.err.println(line);
            }  


            } catch (Exception asd) {
                System.err.println(asd);
            }

私の出力は、ファイルの最初の行を印刷しません。私が間違っていることを知っている人はいますか?

4

3 に答える 3

5

それは、 だった最初の行を食べ尽くしているからですread

String line = br.readLine();  // First line was read here.

while (line != null && br.getLineNumber() <= 6 ) {   
    line = br.readLine();  // Your first line was overriden here.
    System.err.println(line);
}

上記のコードを次のようにします。

String line = null;  
while ((line = br.readLine()) != null && br.getLineNumber() <= 6 ) {   // Line is read and checked - both together
    System.err.println(line);
}
于 2013-04-25T11:09:51.320 に答える
1

これらの 2 行を入れ替えます

line = br.readLine();  
System.err.println(line);

こうなるように

System.err.println(line);
line = br.readLine(); 

最初の印刷の前に read を 2 回呼び出しています。

于 2013-04-25T11:09:31.243 に答える
1

9行目で、最初の行を読んでいます。印刷する前にwhileループの2行目を読んでいるので、これは決して印刷されません

于 2013-04-25T11:09:38.710 に答える