Windows和Linux的文件分隔符、换行符问题
一般来说,大部分java开发是在Windows上开发,而生产环境下在Linux中运行
文件分隔符
Windows文件分隔符默认为"\",由于是转义符,通常开发中写为"\\",注意,Windows也可以识别"/"分隔符
Linux文件分隔符默认为"/",且只能识别这种
所以,在日常开发中文件分隔符建议写为"/",推荐使用File.separator或者File.separatorChar
编写创建文件的代码应注意一点,在windows系统中路径中使用“\”,同时需要再加一个转义的“\”,即形成了类似如下的路径:
“path\\fileName”
此种路径在windows系统没什么不对,但是到了linux系统会出现问题,在linux系统会生成名为“path\”的一个文件夹,当你再需要对创建的文件操作时,就会找不到文件。
解决时可以在路径中使用“/”,如:
“path/fileName”
但是某些时候,这样会在windows系统中出现问题,如:页面上点击按钮,action里在路径中用“/”来生成一个.csv文件,然后读出文件,在新窗口中打开。此时会出现在原窗口打开的现象,不会在新窗口中打开,如果在路径中用“\\”,可以解决这个问题,但是,运行在linux上会出现开始说的情况。
最终的解决方法是:
在路径中加入的路径分隔符随系统改变,即用File.separator,可以解决掉此问题。
换行符
CR回车 LF换行
Windows/Dos CRLF \r\n
Linux/Unix LF \n
MacOS CR \r
java开发
Linux只能识别\n换行符,\r会被当做一个字符,而Windows下默认换行符为\r\n,但\n也可以。
所以当使用Java输出数据到文件中时推荐使用\n