3

次のスニペットは、あるディレクトリに存在するディレクトリとファイルの名前をテキストファイルに書き込もうとします。それぞれの名前は別々の行に書き込む必要があります。代わりに、それぞれの名前を同じ行に出力します。なんでそうなの?

        try {
        File listFile = new File("E:" + System.getProperty("file.separator") + "Shiv Kumar Sharma Torrent"+ System.getProperty("file.separator") +"list.txt");
        FileWriter writer = new FileWriter(listFile,true);
        Iterator iterator = directoryList.iterator();
        while(iterator.hasNext()) {
            writer.write((String)iterator.next());
            writer.write("\n"); // Did this so each name is on a new line
        }
        writer.close();
    }catch(Exception exc) {
        exc.printStackTrace();
    }

出力:

ここに画像の説明を入力してください

どこを間違えているのですか?

4

4 に答える 4

5

テキストの書式設定が必要な場合は常にPrintWriterを使用してください。
正しい方法は、ライターをPrintWriter内にラップし、次のように println() メソッドを使用することです。

PrintWriter printWriter = new PrintWriter(writer);
printWriter.println();
于 2012-06-16T04:54:22.283 に答える
4

Windowsを使用している場合は、\r\nの代わりにを使用してください\n

またはOSに依存しない場合は、次を使用します。

System.getProperty("line.separator");
于 2012-06-16T04:52:20.327 に答える
1

BufferedWriter を使用する場合:

 File f = new File("C:/file.txt");
 BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
 bw.write("Hello");
 bw.newLine();   // new line
 bw.write("How are you?");
 bw.close();
于 2012-06-16T05:00:25.700 に答える
1

Windows プラットフォームを使用している場合は、次の行を「\r\n」と記述してください。

Windows の次の行は「\r\n」です。

Mac の次の行は「\n」です。

または、改行に System.getProperty("line.separator") を使用します。実行中のシステムに適した改行を自動的に決定します。Java は異なる OS でも同じように動作することが期待されるため、これがベスト プラクティスです。

于 2012-06-16T04:55:23.483 に答える