[英]Extra New Lines When Writing Java File on Linux vs Windows
我有一个使用Java编写的.txt文件,该文件具有非常特定的换行安排。 当我在Windows上编写文件时,会强制执行这种安排,但是当我在Ubuntu上运行相同的代码时,每个应该有一个地方的地方都有两个新行。 有谁知道这可能是什么原因? 这是我用来编写的代码:
List<String>toBeWrittenList = new ArrayList<String>();
for(int x=0; x < finalList.size(); x++){
toBeWrittenList.add("\n");
toBeWrittenList.add("==level " + (x+1) +"==");
for(int y=0; y < finalList.get(x).size();y++){
if(finalList.get(x).get(y).equals("N"))
toBeWrittenList.add(y+1 + ". null");
else
toBeWrittenList.add(y+1 + ". " + finalList.get(x).get(y));
}
}
try {
writeSmallTextFile(toBeWrittenList, FILE_NAME3);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
static void writeSmallTextFile(List<String> aLines, String aFileName) throws IOException {
Path path = Paths.get(aFileName);
Files.write(path, aLines, ENCODING);
}
我通常使用PrintWriter方法println创建一个文本文件。 println将检查您的操作系统并选择正确的进纸线(\\ n或\\ n \\ r)。
该问题可能存在于Files.write中。 你是自己写课吗? 还是您正在使用第三方图书馆?
Windows使用一对“ \\ r \\ n”字符来区分换行符,而Linux则将“ \\ n”视为换行符,并且也将其视为“ \\ r”。 因此,“ \\ r \\ n”看起来更像Linux中的两个换行符。
将文本文件复制到Linux框中时,请通过dos2unix
运行文本文件,以将“ \\ r \\ n”转换为“ \\ n”。 将文本文件复制回Windows时,请通过unix2dos
运行文本文件,以将“ \\ n”转换回“ \\ r \\ n”对。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.