Java println:Windows与Linux

| 我有一个Java程序,它使用jcifs库-samba的东西将文件写入远程机器文件系统。 SmbFile => SmbFileOutputStream => PrintStream,我使用普通的println(String)。一切正常,直到我将应用程序移动到Linux机器上,现在远程Windows机器上的打印文件看起来很奇怪。 我认为问题在于两个操作系统如何处理由println()函数插入的CR,LF。我的\'jar \'每天执行一次,并由\'crontab \'通过\'sh \'启动文件触发。 有没有一种方法可以解决该问题而无需触碰Java代码? 有没有一种方法可以编写Java程序使其在两种OS(可能是所有OS)上都能工作? 谢谢     
已邀请:
        尝试使用系统属性“ line.separator”。您可以阅读以供参考。     
        您将不得不在文件中更改新的行分隔符。在linux中,有一个名为dos2unix的实用程序,可将现有文件的新行分隔符从dos / windows转换为linux / unix。     
        System.out.println是一个PrintStream,它使用line.separator的环境设置作为它的行分隔符。解决您的问题的一种方法是传递-Dline.separator参数。 不过,最好的解决方案可能是仅使用具有更好编辑器的文件来查看文件。 Windows上的Notepad ++和其他许多语言都可以理解这两种类型的行尾,而记事本则不能。甚至内置的写字板在显示unix文件结尾方面也做得更好。     
        如果您的Java文件在Linux机器上运行,则println将使用Linux标准\“ \\ n \” 如果您希望它始终使用\\ r \\ n,而不更改系统属性,只需替换您的 println(\“ text \”)与print(\“ text \\ r \\ n \”)。或创建一个自定义函数printWindowsLine来做到这一点     

要回复问题请先登录注册