使用 File 对象初始化 FileInputStream 时获取 FileNotFoundException
-
14-09-2019 - |
题
我正在尝试使用 File 对象初始化 FileInputStream 对象。我收到 FileNotFound 错误
fis = new FileInputStream(file);
这很奇怪,因为我已经通过相同的方法打开该文件多次执行正则表达式。
我的方法如下:
private BufferedInputStream fileToBIS(File file){
FileInputStream fis = null;
BufferedInputStream bis =null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bis;
}
java.io.FileNotFoundException:C:\dev\server omcat6\webapps\sample-site(访问被拒绝)
在 java.io.FileInputStream.open(本机方法)
在 java.io.FileInputStream.(来源未知)
在 java.io.FileInputStream.(来源未知)
在控制器.ScanEditRegions.fileToBIS(ScanEditRegions.java:52)
在控制器.ScanEditRegions.tidyHTML(ScanEditRegions.java:38)
在控制器.ScanEditRegions.process(ScanEditRegions.java:64)
在controller.ScanEditRegions.visitAllDirsAndFiles(ScanEditRegions.java:148)
在controller.Manager.main(Manager.java:10)
解决方案
这是您在您的文章粘贴的堆栈跟踪来看我猜你没有读取文件的权限。
在文件类可以在文件上执行有用的检查,其中的一些:
boolean canExecute();
boolean canRead();
boolean canWrite();
boolean exists();
boolean isFile();
boolean isDirectory();
例如,你可以检查:是否存在()&& ISFILE()&&的CanRead(),并打印出更好的错误消息取决于你为什么不能读取文件的原因
其他提示
这是具有在OS文件权限设置执行。你已经开始了Java过程,谁没有访问权限的具体目录的用户。
您可能想确保(按可能性的顺序):
- 该文件存在。
- 该文件不是目录。
- 您或 Java 进程有权打开该文件。
- 另一个进程没有锁定该文件(很可能,因为您可能会收到标准 IOException 而不是 FileNotFoundException)
我想你正在执行从蚀或任何Java IDE和目标文件中的语句也存在于IDE工作区。比如Eclipse着阅读在同一个工作区的目标文件你所得到的错误。您可以从命令提示符下你的代码。它不应该通过任何异常。