gpt4 book ai didi

java - 为什么这个简单的程序在 Java 和 AIX 中执行时会导致不同的回车/换行文件?

转载 作者:行者123 更新时间:2023-11-29 10:06:07 24 4
gpt4 key购买 nike

如果我在 Windows 7 上运行这个简单的程序,然后在 AIX(Unix 系统)上运行,并使用 Winmerge 或 Compare It 等工具比较两个生成的文件,它告诉我回车符和换行符不同但内容相同。

  • 这是为什么?在这种情况下,如果两者都使用相同的编码“UTF-8”,不应该是相同的吗?

  • 如何使两个文件完全相等?

public class WriteFile {

public static void main(String[] args) throws IOException {
write();

}

public static void write() throws IOException {
File file = new File("/tmp/test.txt");
file.delete();
file.createNewFile();
String str = "hello";
FileOutputStream fileOs = new FileOutputStream(file);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(fileOs, "UTF-8"), true);
writer.println(str);
writer.close();
}

}

最佳答案

不同的操作系统使用不同的换行约定:

  • 在 Windows 上,换行符是 CR+LF
  • 在 Unix 上,换行符是 LF

(如果你很好奇,这里有 more .)。

如果你需要输出文件完全相同,不要使用println(),而是写成\n\r\n 相反:

writer.printf("%s\n", str);   // LF
writer.printf("%s\r\n", str); // CR+LF

关于java - 为什么这个简单的程序在 Java 和 AIX 中执行时会导致不同的回车/换行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7756799/

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