gpt4 book ai didi

java - 无法使用linux机器在输入文件中添加新行

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:32 26 4
gpt4 key购买 nike

我的要求是生成一个文本文件。我使用 bufferedWriter.newLine() 在我的文件中添加了新行,它在 Windows 中工作正常,但在 Linux 中不起作用。我尝试了太多东西,但没有解决任何问题。如果我在 Notepad++ 中打开生成的文本文件,它显示为行分隔,但在记事本中它看起来没有任何行分隔符。在控制台中,我可以在两个平台,但文件只有 windows 有新行,但 linux 没有。

下面是我的代码

File file = new File(fileToWrite);
bufferedWrtier = new BufferedWriter(new FileWriter(file));
LOGGER.debug("Line Separator 1:: "+System.getProperty("line.separator"));
LOGGER.debug("Line Separator 2:: "+System.lineSeparator());
LOGGER.debug("Line Separator 3:: "+SystemUtils.LINE_SEPARATOR);
bufferedWrtier.write(System.getProperty("line.separator"));
bufferedWrtier.write(System.lineSeparator());
bufferedWrtier.write(SystemUtils.LINE_SEPARATOR);

任何帮助将不胜感激!!!!!!!!!

本地机器操作系统:windows服务器机器操作系统:Linux

最佳答案

您在这里看到的是换行表示的差异,具体取决于您使用的操作系统。

有两个控制字符你需要知道:

  • CL - 回车('\r' 或十六进制的 0x0D)
  • LF - 换行('\n' 或十六进制的 0x0A)

Windows 原生使用 CL+LF 组合换行(\r\n 组合,或两个字节),而 Linux 仅使用 LF(\n,一个字节) .

记事本是一个非常有限的工具,它只能正确解释 Windows 组合 - 如果它看到两个字节的序列 - 0x0D 后跟 0x0A 在你的文件中,它将显示为一个新行。

如果它只看到0x0A而没有0x0D,它不会将其视为换行组合,而是将0x0A显示为一个框(或者它只会在 Windows 10 上被忽略),因为它是不可打印的字符。

要查看此效果,请在 Notepad++ 中打开所有字符的查看:

View -> Show symbol -> Show all characters

您会看到 Windows 文件有 CRLF,而类 Unix 文件有 LF

类 Unix 将无法在记事本中正确显示。

你可以像这样在 Windows 和 Unix 之间切换:

Edit -> EOL conversion

我建议阅读 the Wikipedia article了解更多信息和 SO post了解更多。

关于java - 无法使用linux机器在输入文件中添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40177117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com