javaprintln:Windows与Linux
我有一个java程序,它使用jcifs库(samba stuff)将文件写入远程机器文件系统;SmbFile=>;SmbFileOutputStream=>;PrintStream和I使用公共println(字符串)。在我将应用程序移到linux机器之前,一切都很顺利,现在远程windows机器上打印的文件看起来很奇怪
我认为问题在于两个操作系统如何处理println()函数插入的CR,LF。我的'jar'每天执行一次,由'crontab'通过'sh'启动文件触发
- 有没有一种方法可以在不涉及java代码的情况下解决这个问题李>
- 有没有一种方法可以编写一个java程序,使它在这两种OSs(可能是所有OSs)上都能工作李>
多谢各位
# 1 楼答案
系统。出来println是一个PrintStream,其中uses the environment setting代表line.separator作为它的行分隔符。解决你问题的一个办法是通过电话。分隔符参数
不过,最好的解决方案可能是使用更好的编辑器查看文件。Notepad++和Windows上的许多其他软件都能理解这两种行尾,而Notepad则不能。即使是内置的写字板也能更好地显示unix文件的结尾
# 2 楼答案
您必须更改文件中的新行分隔符。在linux中,有一个名为dos2unix的实用程序,它将现有文件的新行分隔符从dos/windows转换为linux/unix
# 3 楼答案
尝试使用系统属性“line.separator”。你可以读this for reference.
# 4 楼答案
如果java文件在linux机器上运行,println将使用linux标准“\n” 如果您想让它一直使用\r\n而不更改系统属性,只需更换 println(“文本”)和print(“文本\r\n”)。或者创建一个自定义函数printWindowsLine来实现这一点