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.

或者对于独立于操作系统的,使用:

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

如果您在 Windows 平台上,则应将下一行写为“\r\n”。

Windows 的下一行是“\r\n”

Mac 的下一行是“\n”

或者,使用 System.getProperty("line.separator") 换行。它会自动为其运行的系统确定正确的换行符。这应该是最佳实践,因为 Java 预计会在不同的操作系统上执行相同的操作。

于 2012-06-16T04:55:23.483 回答
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 回答