背景
数据库导出到文件中的一项记录,出现了多行……
根据主键查数据库发现,数据字段中有换行符……
但是奇怪的事情是,我用命令:cat data.txt |wc -l
查看文本行数时,只有一行
可是我拿到自己机器(Mac)用SublineText打开,发现是多行!
正文
开始关注到ASCII码中的CR(回车符)、LF(换行符)
找到问题的原因:为什么会使用命令查询行数是一行,用文本读取器打开是多行
这里就是一个行尾结束符的选择问题,有几种选择:\r \n
、\r
、\n
我的SublineText文本读取器默认是按\r
选择换行的
可是我数据字段本身就是多行,所以他的数据里也会有\r
符
然后分析,为什么我Java多出来是多行呢?
开始逐步分析,我读取文本文件用的BufferedReader
类的readline
方法
然后看到readline源码,我去,什么玩意,看不懂!
跑去搜索引擎找答案,
翻来覆去,找了一堆东西,其中这个说:https://segmentfault.com/a/1190000004367243