2012-07-13 73 views
1

我想知道,當我在記事本中打開文件。我看到一條沒有任何回車/換行的實線。在java中換行字符讀取

我做了一個java程序來讀取文件。當我通過使用\nSystem.getProperty("line.separator");從文件分割數據時。我看到很多線條。

我在十六進制編輯器中發現該文件對於新行(在UNIX中使用)具有'0A'並且它在記事本中顯示爲矩形。

那麼,我的問題是,如果它沒有'0D'和'OA'(在Windows中用於回車和換行)。我的java程序如何將數據分成幾行?它不應該分裂它。

任何人有什麼想法?

回答

3

的Java內部使用Unicode工作。

Unicode標準定義了大量 符合應用程序應該承認行終止字符:[3]
LF:換行,U + 000A
VT:垂直製表,U + 000B
FF:進紙,U + 000C
CR:回車,U + 000D
CR + LF:CR(U + 000D),接着LF(U + 000A)
NEL:下一行,U + 0085
LS:線路分離器,U + 2028
PS:段落分隔符,U + 2029

http://en.wikipedia.org/wiki/Newline) 這就是爲什麼它解釋爲\n換行符。

+1

我不知道這是正確的。 '「123 \ n456」.split(System.getProperty(「line.separator」))'是Windows上的一個大小爲1的數組。 – Synesso 2012-07-13 07:29:49

+0

String的拆分方法接受一個正則表達式,其中'\ r \ n'不匹配'\ n',但是在'JTextArea'中換行應該很好 - 同樣應該適用於'System.out.print'。 – 2012-07-13 07:33:00

+0

謝謝你的解釋。 – 2012-07-13 09:35:18

0

當處理任何類型的文本文件時,Windows記事本是強烈避免的。
我建議使用Notepad++

不僅他會很好地顯示你的文字,但它也有一個特點,在對文件編碼UTF-8和無BOM:d

2

字符\n0a(回車)。如果您將Windows行分隔符分割爲\n,則只會在0a上分割,而將0d字符留下。

記事本將0a顯示爲正方形,但它會將0d0a渲染爲換行符。

下面是在Windows上使用Scala的(這是Java的下蓋)的例子:

scala> "123\n456".split(System.getProperty("line.separator")).length 
res1: Int = 1 

scala> "123\n456".split("\r\n").length // same as the line above on Windows 
res2: Int = 1 

scala> "123\n456".split("\n").length 
res3: Int = 2 
+1

確切地說,對於windows新行,您可以將它拆分爲「\ r \ n」,而不僅僅是「\ n」 – JIV 2012-07-13 07:24:21

相關問題