【问题标题】:New Line while writing into file写入文件时换行
【发布时间】:2015-10-07 18:35:10
【问题描述】:

我关注了this 链接,我想出了以下代码

     try {
        File file = new File(
                "C:/dataset.txt");

        // if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
        BufferedWriter bw = new BufferedWriter(fw);

        List<Integer> data = generateData(args);

        // one per line
        for (final int i : data) {
            bw.write(i);
            bw.newLine(); // Here it throws NullPointerException
        }
        bw.close();
    } catch (IOException e) {
        System.out.print(e);
    }

注意:即使我在 for 循环之前移动 bw.newLine();,它也会抛出 NullPointerException

图片

我错过了什么吗?

【问题讨论】:

  • 你确定它会抛出 NullPointerException 吗?
  • 是的,我附上了图片。查看更新的问题。
  • 您确定bw.newLine(); 是引发异常的那个吗?
  • newLinewrite System.getProperty("line.separator") 返回的内容加上将尝试获取其长度。如果不存在这样的系统属性(通过显式执行clearProperty?),则会抛出 NPE。
  • @orique System.getProperty("line.separator") 返回null

标签: java filewriter


【解决方案1】:

要添加行分隔符,您可以使用它。

    //to add a new line after each value added to File
    String newLine = System.getProperty("line.separator"); 

然后这样称呼它:

    bw.write(newLine);

编辑: 因为您不能将 System.getProperty 与 BufferWriter 一起使用,所以我建议使用以下代码:

private FileOutputStream fOut;
private OutputStreamWriter writer;
fOut = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
writer = new OutputStreamWriter(fOut);
writer.append(.... whatever you wish to append ...);
writer.append(separator);
writer.flush();
fOut.close();

希望有帮助!

【讨论】:

  • System.getProperty("line.separator") 返回null
  • write 实现在参数上执行.length(),因此它会抛出 NPE。此系统属性不应为空...
  • 请看编辑部分!我根据@orique 所说的更新了代码:D
猜你喜欢
  • 2011-09-02
  • 2020-07-15
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 2019-09-23
相关资源
最近更新 更多