字符串不会写入新行

时间:2012-06-16 04:50:49

标签: java file-io newline

以下代码片段尝试将某些目录中存在的目录和文件的名称写入文本文件。每个名称应写入单独的行。而不是在同一行上打印每个名称。为什么会这样?

        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();
    }

输出:

enter image description here

我在哪里犯了错误?

4 个答案:

答案 0 :(得分:5)

每当您需要文字格式时,请始终使用PrintWriter 正确的做法是将作者包装在PrintWriter内并使用println()方法,如:

PrintWriter printWriter = new PrintWriter(writer);
printWriter.println();

答案 1 :(得分:4)

如果您使用的是Windows,请使用\r\n代替\n

或与OS无关,请使用:

System.getProperty("line.separator");

答案 2 :(得分:1)

如果您使用的是Windows平台,则应将下一行写为“\ r \ n”。

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

Mac的下一行是“\ n”

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

答案 3 :(得分: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();