簡體   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