我正在尝试使用以下代码在文本文件中编写换行符分隔数据:
BufferedWriter bufferedWriter=null;
FileWriter fileWriter=null;
ArrayList<String> count=new ArrayList<>();
count.add("2");
count.add("4");
fileWriter=new FileWriter(fileName);
bufferedWriter=new BufferedWriter(fileWriter);
bufferedWriter.write(String.valueOf(count));
PrintWriter printWriter=new PrintWriter(fileWriter);
printWriter.write(count + "\n");
bufferedWriter.close();
printWriter.close();
但问题是正在编写的数据是这样的:
[2, 4][2, 4]
我怎样才能拥有这样的数据:
2
4
3
54
答案 0 :(得分:1)
我希望try-with-resources
超过显式关闭。另外,我会使用for-each
loop来迭代List
中的值(并编程到接口)。像,
List<String> count = Arrays.asList("2", "4", "3", "54");
try (PrintWriter pw = new PrintWriter(new BufferedWriter(
new FileWriter(fileName)))) {
for (String s : count) {
pw.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
'\ n'是Unix换行符。在Windows上,它是“\ r \ n”,您需要在String.format中使用System.lineSeparator()或“%n”来使用适合您系统的任何一个。您使用BufferedReader和PrintReader打印到同一文件两次非常奇怪。你为什么需要两个?你只是写了2和4,因为这一切都在你的数据中。
您的代码中有大量不必要的内容。只需在声明变量时进行初始化。
List<String> count = Arrays.asList("2", "4", "3", "54");
try(PrintWriter printWriter = new PrintWriter(new File(fileName)){
count.stream().forEach(printWriter::println);
} // auto-closes the streams
你想要的东西可以这样写,所以你根本不需要换行,因为println会为你处理它。
答案 2 :(得分:0)
BufferedWriter bufferedWriter=null;
FileWriter fileWriter=null;
ArrayList<String> count=new ArrayList<>();
count.add("2");
count.add("4");
count.add("3");
count.add("54");
fileWriter=new FileWriter(fileName);
bufferedWriter=new BufferedWriter(fileWriter);
for(int i = 0;i < count.size();i++){
bufferedWriter.write(String.valueOf(count.get(i)) + "\n");
}
bufferedWriter.close();