Получить FileNotFoundException при инициализации FileInputStream с помощью File object

StackOverflow https://stackoverflow.com/questions/999771

Вопрос

Я пытаюсь инициализировать объект FileInputStream с помощью объекта File .Я получаю ошибку 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.файлообменник (ScanEditRegions.java:52)
    на контроллере.ScanEditRegions.tidyHTML(ScanEditRegions.java:38)
    на контроллере.ScanEditRegions.process(ScanEditRegions.java:64)
    на контроллере.Сканируйте регионы.Посещайте все папки и файлы (ScanEditRegions.java:148)
    в controller.Manager.main(Manager.java:10)

Это было полезно?

Решение

Судя по stacktrace, который вы вставили в свой пост, я бы предположил, что у вас нет прав на чтение файла.

Класс File позволяет вам выполнять полезные проверки файла, некоторые из них:

boolean canExecute();
boolean canRead();
boolean canWrite();
boolean exists();
boolean isFile();
boolean isDirectory();

Например, вы могли бы проверить наличие:exists() && isFile() && CanRead() и выведите лучшее сообщение об ошибке в зависимости от причины, по которой вы не можете прочитать файл.

Другие советы

Это связано с настройками прав доступа к файлам в операционной системе.Вы запустили процесс java как пользователь, у которого нет прав доступа к определенному каталогу.

Возможно, вы захотите убедиться, что (в порядке вероятности):

  1. Файл существует.
  2. Файл не является каталогом.
  3. У вас или процесса Java есть разрешения на открытие файла.
  4. Другой процесс не имеет блокировки файла (вероятно, поскольку вы, вероятно, получили бы стандартное исключение IOException вместо FileNotFoundException)

Я думаю, что вы выполняете инструкцию из eclipse или любой java IDE, и целевой файл также присутствует в рабочей области IDE.Вы получаете сообщение об ошибке, так как Eclipse не может прочитать целевой файл в той же рабочей области.Вы можете запустить свой код из командной строки.Это не должно быть каким-либо исключением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top