java中的换行符读取
我想知道当我在记事本中打开一个文件时。我看到一条没有任何回车/换行的连续线 我制作了一个java程序来读取文件。当我使用java中的换行符读取,java,carriage-return,linefeed,Java,Carriage Return,Linefeed,我想知道当我在记事本中打开一个文件时。我看到一条没有任何回车/换行的连续线 我制作了一个java程序来读取文件。当我使用\n或System.getProperty(“line.separator”)从文件中拆分数据时。我看到很多线 我在hex编辑器中发现该文件的新行为“0A”(在UNIX中使用),它在记事本中显示为矩形 我的问题是,如果它没有“0D”和“OA”(在Windows中用于回车和换行)。我的java程序是如何将数据拆分成行的?它不应该分裂它 有人知道吗?在处理任何类型的文本文件时,都要
\n
或System.getProperty(“line.separator”)从文件中拆分数据时代码>。我看到很多线
我在hex编辑器中发现该文件的新行为“0A”(在UNIX中使用),它在记事本中显示为矩形
我的问题是,如果它没有“0D”和“OA”(在Windows中用于回车和换行)。我的java程序是如何将数据拆分成行的?它不应该分裂它
有人知道吗?在处理任何类型的文本文件时,都要极力避免使用Windows记事本。
我建议使用
他不仅可以很好地显示您的文本,而且还提供了一个功能,可以对文件进行编码:DJava内部使用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')或回车符*中紧跟换行符的任意一个*终止的。