我正在尝试使用 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过程,谁没有访问权限的具体目录的用户。

您可能想确保(按可能性的顺序):

  1. 该文件存在。
  2. 该文件不是目录。
  3. 您或 Java 进程有权打开该文件。
  4. 另一个进程没有锁定该文件(很可能,因为您可能会收到标准 IOException 而不是 FileNotFoundException)

我想你正在执行从蚀或任何Java IDE和目标文件中的语句也存在于IDE工作区。比如Eclipse着阅读在同一个工作区的目标文件你所得到的错误。您可以从命令提示符下你的代码。它不应该通过任何异常。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top