我正在阅读有效的Java,它%n在各处都用于换行符。我已经\n相当成功地在Java程序中使用了换行符。哪个是“正确”的?这有什么错\n?Java为什么要更改此C约定?
3 回答

侃侃无极
TA贡献2051条经验 获得超10个赞
“正确”取决于您要尝试执行的操作。
\ n将始终为您提供“ unix样式”行结尾。\ r \ n将始终为您提供“ dos样式”行结尾。%n将为您提供所运行平台的行尾
C处理此问题的方式有所不同。您可以选择以“文本”或“二进制”模式打开文件。如果您以二进制模式打开文件,\ n将为您提供“ unix样式”行结尾,而“ \ r \ n”将为您提供“ dos样式”行结尾。如果在dos / windows系统上以“文本”模式打开文件,则在编写\ n时,文件处理代码会将其转换为\ r \ n。因此,通过以文本模式打开文件并使用\ n,您可以获得平台特定的行结尾。
我可以看到为什么Java的设计者不想复制C关于“文本”和“二进制”文件模式的怪异想法。

白衣染霜花
TA贡献1796条经验 获得超10个赞
尽管这\n是基于Unix的系统的正确换行符,但其他系统可能使用不同的字符来表示行尾。特别是Windows系统\r\n和早期MacOS系统\r。
通过使用%n格式字符串,您可以告诉Java使用所返回的值System.getProperty("line.separator"),该值是当前系统的行分隔符。
添加回答
举报
0/150
提交
取消