3 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
“正確”取決于您要嘗試執(zhí)行的操作。
\ n將始終為您提供“ unix樣式”行結(jié)尾。\ r \ n將始終為您提供“ dos樣式”行結(jié)尾。%n將為您提供所運(yùn)行平臺的行尾
C處理此問題的方式有所不同。您可以選擇以“文本”或“二進(jìn)制”模式打開文件。如果您以二進(jìn)制模式打開文件,\ n將為您提供“ unix樣式”行結(jié)尾,而“ \ r \ n”將為您提供“ dos樣式”行結(jié)尾。如果在dos / windows系統(tǒng)上以“文本”模式打開文件,則在編寫\ n時(shí),文件處理代碼會將其轉(zhuǎn)換為\ r \ n。因此,通過以文本模式打開文件并使用\ n,您可以獲得平臺特定的行結(jié)尾。
我可以看到為什么Java的設(shè)計(jì)者不想復(fù)制C關(guān)于“文本”和“二進(jìn)制”文件模式的怪異想法。

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
盡管這\n是基于Unix的系統(tǒng)的正確換行符,但其他系統(tǒng)可能使用不同的字符來表示行尾。特別是Windows系統(tǒng)\r\n和早期MacOS系統(tǒng)\r。
通過使用%n格式字符串,您可以告訴Java使用所返回的值System.getProperty("line.separator"),該值是當(dāng)前系統(tǒng)的行分隔符。
添加回答
舉報(bào)