项目场景:SpringBoot项目的出现java.io.FileNotFoundException: (系统找不到指定的路径。)
项目场景:Springboot用到文件上传下载功能
问题描述:
问题:java.io.FileNotFoundException: (系统找不到指定的路径。)
具体开发环境下控制台的报错为(windows开发环境):
java.io.FileNotFoundException: D:\ (系统找不到指定的路径。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
...
原因分析:
在进行分析时,我得说清楚什么时候抛拒绝访问,什么时候抛找不到指定路径。原因是这样的,在构造一个File对象时,指定的文件路径是什么都可以,就算不存在也能够构造File对象,但是,现在你要对文件进行输入输出操作,也就是InputStream和OutputStream操作时,如果填写的路径不存在,那么就会报系统找不到指定路径
解决方案:
具体出现问题的地方有如下几个:
1、Linux和window系统的目录结构有所差异,具体例子如下:
#Linux
file.uploadFolder=/root/uploadFiles/
#Windows
file.uploadFolder=d://uploadFiles/
2、项目中是否设置了虚拟路径,访问绝对路径下资源或同类的方法。如果有可以检查方法中针对路径path是否有特别的设置,比如:
另附,虚拟路径设置,访问绝对路径下资源的方法:
@Configuration
public class UploadFilePathConfig extends WebMvcConfigurerAdapter {
@Value("${file.staticAccessPath}")
private String staticAccessPath;
@Value("${file.uploadFolder}")
private String uploadFolder;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)