关于文件操作中,在Windows上正常,在linux上“No such file or directory”异常
最近在项目中负责文件系统的功能编写。包括文件的上传、下载和部分文件的预览功能实现。
在开发过程中程序能够正常运行,但是项目部署到了测试环境linux系统时,出现文件上传后无法下载的情况,后面查看日志,发现报“No such file or directory”,因为在开发环境中是正常的,所以一时没有发现问题所在,后面通过详细的查看日志,发现是文件路径出错了,才了解到是Windows和linux系统的文件路径有差别,在Windows中,”\“和”/“都能正常识别,而在Linux系统中,只能使用”/“来代表文件路径。后面通过学习,发现早已有解决这个问题,File类中的separator就是用来表示路径分隔符的,可以完美适应系统,所以我把代码中的”\“都改成了File.separator,系统就正常运行了。
比如说要在temp目录下建立一个test.txt文件,在Windows下应该这么写:
File file1 = new File ("C:\tmp\test.txt");
在Linux下则是这样的:
File file2 = new File ("/tmp/test.txt");
如果要考虑跨平台,则最好是这么写:
File myFile = new File("C:" + File.separator + "tmp" + File.separator + "test.txt");