我正在写一个文本文件但是当我查看文件时,即使我在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”。
答案 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+中,使用Stream
与forEachOrdered
类似
List<String> list = new ArrayList<>();
File file = new File(dir.getAbsolutePath(), "SavedJavaArithmetic.txt");
try (PrintWriter pw = new PrintWriter(file)) {
list.stream().forEachOrdered(pw::println);
}