1

我有一个我正在使用 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);
}
4

2 回答 2

0

我通常使用 PrintWriter 方法 println 来创建文本文件。println 将检查您的操作系统并选择正确的馈线(\n 或 \n\r)。

Files.write 中可能存在问题。你是自己写的课吗?还是您使用的是 3rd 方库?

于 2013-03-29T03:51:18.830 回答
-1

Windows 使用“\r\n”对字符来区分换行符,而 Linux 将“\n”视为换行符,并且看似“\r”。因此 "\r\n" 在 Linux 中看起来更像是两个换行符。

将文本文件dos2unix复制到 Linux 机器时运行它们,将“\r\n”翻译成“\n”。将文本文件unix2dos复制回 Windows 时运行它们,将“\n”翻译回“\r\n”对。

于 2013-03-29T02:59:45.007 回答