写入文本文件时如何结束行?

时间:2017-11-02 03:11:13

标签: java text-files filewriter bufferedwriter

我正在写一个文本文件但是当我查看文件时,即使我在for循环中的字符串中添加“\ n”,一切都在线。我在俯瞰什么?

File file = new File(dir.getAbsolutePath() + "\\SavedJavaArithmetic.txt");

FileWriter fileW = new FileWriter(file);
BufferedWriter buffW = new BufferedWriter(fileW);

for (int i = 0; i < list.size(); i++) {
    buffW.write(list.get(i).toString() + "\n");
}
buffW.close();
fileW.close();

当for循环开始时,已经创建并填充了arraylist“list”。

1 个答案:

答案 0 :(得分:3)

请编入List界面。对于您的问题,请使用System.lineSeparator(),因为"\n"不是跨平台的(在Windows上,行分隔符为"\r\n")。接下来,File提供了两个参数构造函数。并且BufferedWriter.newLine()可能看起来像

List<String> list = new ArrayList<>();
File file = new File(dir.getAbsolutePath(), "SavedJavaArithmetic.txt");

try (FileWriter fileW = new FileWriter(file);
            BufferedWriter buffW = new BufferedWriter(fileW)) {
    for (int i = 0; i < list.size(); i++) {
        buffW.write(list.get(i));
        buffW.newLine();
    }
}

或者,使用PrintWriter(它提供更自然的语法)。而且,我会使用for-each循环。 同样,在这两种情况下,我都会使用try-with-resources来处理close(s)。将它们放在一起可能看起来像,

List<String> list = new ArrayList<>();
// ...
File file = new File(dir.getAbsolutePath(), "SavedJavaArithmetic.txt");
try (PrintWriter pw = new PrintWriter(file)) {
    for (String str : list) {
        pw.println(str);
    }
}

,在Java 8+中,使用StreamforEachOrdered类似

List<String> list = new ArrayList<>();
File file = new File(dir.getAbsolutePath(), "SavedJavaArithmetic.txt");
try (PrintWriter pw = new PrintWriter(file)) {
    list.stream().forEachOrdered(pw::println);
}