我正在尝试使用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 \ tomcat6 \ webapps \ sample-site(访问被拒绝)
在java.io.FileInputStream.open(本机方法)
在java.io.FileInputStream。(未知来源)
在java.io.FileInputStream。(未知来源)
在controller.ScanEditRegions.fileToBIS(ScanEditRegions.java:52)
在controller.ScanEditRegions.tidyHTML(ScanEditRegions.java:38)
在controller.ScanEditRegions.process(ScanEditRegions.java:64)
在controller.ScanEditRegions.visitAllDirsAndFiles(ScanEditRegions.java:148)
在controller.Manager.main(Manager.java:10)
答案 0 :(得分:9)
根据您在帖子中粘贴的堆栈跟踪判断,我猜您无权读取该文件。
File类允许您对文件执行有用的检查,其中一些是:
boolean canExecute();
boolean canRead();
boolean canWrite();
boolean exists();
boolean isFile();
boolean isDirectory();
例如,您可以检查:exists()&& isFile()&& canRead()并打印出更好的错误消息,具体取决于您无法读取文件的原因。
答案 1 :(得分:3)
这与操作系统中的文件权限设置有关。您已经以不具有特定目录访问权限的用户身份启动了Java进程。
答案 2 :(得分:3)
你可能想要确保(按照可能性的顺序):
答案 3 :(得分:-1)
我认为您正在执行来自eclipse或任何Java IDE的语句,目标文件也存在于IDE工作区中。您正在获取错误,因为Eclipse无法在同一工作区中读取目标文件。您可以从命令提示符运行代码。它不应该是任何例外。