发现这个问题的缘由是最近正在进行的“软件构造”这一门课程。在作业中,我们需要读入一个文件中的数据,但是我打开文件之后却发现所有的数据都挤到了一行里面。然而,读取数据的时候却依旧正常地被一行一行地读入。
这个究竟是什么原因呢?
对于换行这个动作,
- Unix下一般只有一个0x0A表示换行("\n");
- Windows下一般都是0x0D和0x0A两个字符表示换行("\r\n");
- MAC 则采用回车符CR表示下一行("\r")
也就是说,Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”,即“\r”。所以,当我们从Windows输入"\n"到文本文件之中的时候,那个换行符没有能够被Windows显示出来。而在文本文件中敲回车的时候,则输入了"\r\n",这个时候则可见。
使用Java写入文件相似的内容作为测试,也得到了类似的结果。