【问题标题】:"\n" delimiters issue“\n”分隔符问题
【发布时间】:2011-04-13 12:40:41
【问题描述】:

我有一个 stringbuilder 对象,它会添加一行数据。

在每行添加后,我在末尾附加一个“\n”以表示新行。

这个 stringbuilder 对象,最终确定,被写入一个平面文件。

当我在记事本中打开平面文件时,每行后面都会出现一个小矩形,并且列格式被破坏了。

当我在写字板中打开平面文件时,考虑到新行并且列格式完美。

我已经尝试了所有我知道的在写入之前删除新行条目的方法,但这会在写入平面文件时删除格式。我需要新行来格式化列。

如何在不使用 \n 的情况下输出带有新行的文件?

【问题讨论】:

  • 我找到了一个很好的解决方法,我使用 FileWriter 写入文件,而不是使用 PrintWriter,它有一个 println();方法。我分配了一个空字符串作为参数 (printwriter.println("")),文件现在保留格式。
  • 记事本坏了,不要用记事本。

标签: java delimiter


【解决方案1】:

Windows 终止行的方式是使用“\r\n”,而不仅仅是“\n”。

您可以使用line.separator 系统属性找到“当前操作系统的行分隔符”:

String lineSeparator = System.getProperty("line.separator");
...
StringBuilder builder = new StringBuilder();
...
builder.append(lineSeparator);
...

【讨论】:

    【解决方案2】:

    您可以从系统属性中获取运行 Java 程序的系统的值

    public static String newline = System.getProperty("line.separator");
    

    【讨论】:

      【解决方案3】:

      您应该添加System.getProperty("line.separator") 而不是\n。由于“nodepad”,它是\r\n,用于MS Windows。

      【讨论】:

        【解决方案4】:

        在 Windows 中,您应该使用 \n\r。在 *NIX (Linux/UNIX/Mac) 中你应该使用 \n

        【讨论】:

          【解决方案5】:

          如果您使用的是 Windows,则应编写 \r\n 以使其在记事本中正确加载。 \n 终止符是一个 Unix 文件结尾,记事本无法正确解析它。写字板将为您转换它们。

          另外我建议不要使用记事本,而是使用 Vim 之类的东西。

          【讨论】:

          • 记事本用户通常不会毫无困难地使用 vim。
          • 真实,真实,但希望永存:)。
          • Notepad++ 或 Notepad2 会更容易升级。
          猜你喜欢
          • 1970-01-01
          • 2014-06-08
          • 2011-04-15
          相关资源
          最近更新 更多