[英]Java println(charArray + String) vs println(charArray)
[英]Java println: Windows vs Linux
我有一个java程序,使用jcifs库-samba东西将文件写入远程机器文件系统; SmbFile => SmbFileOutputStream => PrintStream,我使用普通的println(String)。 一切正常,直到我将我的应用程序移动到Linux机器,现在我的远程Windows机器上的打印文件看起来很奇怪。
我相信问题是两个操作系统如何处理println()函数插入的CR,LF。 我的'jar'每天执行一次,它由'crontab'通过'sh'启动文件触发。
谢谢
尝试使用系统属性“line.separator” 。 您可以阅读此内容以供参考。
如果您的java文件在linux机器上运行,println将使用linux标准“\\ n”如果您希望它始终使用\\ r \\ n,而不更改系统属性,只需将println(“text”)替换为print(“text” \\ r \\ n“个)。 或者创建一个自定义函数printWindowsLine来做到这一点
您必须更改文件中的新行分隔符。 在linux中,有一个名为dos2unix的实用程序,它将现有文件的新行分隔符从dos / windows转换为linux / unix。
System.out.println是一个PrintStream,它使用 line.separator 的环境设置作为其行分隔符。 您的问题的一个解决方案是传入-Dline.separator参数。
可能最好的解决方案是使用更好的编辑器来查看文件。 Notepad ++和Windows上的许多其他内容将理解两种类型的行结尾,而记事本则不会。 即使是内置的wordpad也能更好地显示unix文件结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.