如何使用FileWriter向文件中的内容添加换行符

时间:2017-06-01 23:17:35

标签: java

我正在尝试使用以下代码在文本文件中编写换行符分隔数据:

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

3 个答案:

答案 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();