java中的换行符读取

java中的换行符读取,java,carriage-return,linefeed,Java,Carriage Return,Linefeed,我想知道当我在记事本中打开一个文件时。我看到一条没有任何回车/换行的连续线 我制作了一个java程序来读取文件。当我使用\n或System.getProperty(“line.separator”)从文件中拆分数据时。我看到很多线 我在hex编辑器中发现该文件的新行为“0A”(在UNIX中使用),它在记事本中显示为矩形 我的问题是,如果它没有“0D”和“OA”(在Windows中用于回车和换行)。我的java程序是如何将数据拆分成行的?它不应该分裂它 有人知道吗?在处理任何类型的文本文件时,都要

我想知道当我在记事本中打开一个文件时。我看到一条没有任何回车/换行的连续线

我制作了一个java程序来读取文件。当我使用
\n
System.getProperty(“line.separator”)从文件中拆分数据时。我看到很多线

我在hex编辑器中发现该文件的新行为“0A”(在UNIX中使用),它在记事本中显示为矩形

我的问题是,如果它没有“0D”和“OA”(在Windows中用于回车和换行)。我的java程序是如何将数据拆分成行的?它不应该分裂它


有人知道吗?

在处理任何类型的文本文件时,都要极力避免使用Windows记事本。
我建议使用


他不仅可以很好地显示您的文本,而且还提供了一个功能,可以对文件进行编码:D

Java内部使用Unicode

Unicode标准定义了大量 符合要求的应用应识别为线路终端:[3]
LF:线路馈电,U+000A
垂直标签,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

()
这就是为什么它将
\n
解释为换行。

字符
\n
0a
(回车)。如果按
\n
拆分Windows行分隔符,则只会在
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

确切地说,对于windows新行,您可以将其拆分为“\r\n”,而不仅仅是“\n”。我不确定这是否正确<代码>“123\n456”.split(System.getProperty(“line.separator”))
是Windows上大小为1的数组。String的split方法接受一个正则表达式,其中
\r\n
\n
不匹配,但在
JTextArea
中,换行符应呈现良好效果-同样应适用于
System.out.print
。感谢您的解释。这是Java缓冲读取器中记录的内容readline()方法:读取一行文本。行被认为是由换行符('\n')、回车符('\r')或回车符*中紧跟换行符的任意一个*终止的。