繁体   English   中英

在Linux和Windows上编写Java文件时需要额外的换行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM