4

Я пытаюсь инициализировать объект FileInputStream с помощью объекта File. Я получаю ошибку FileNotFound на линииGet FileNotFoundException при инициализации FileInputStream с объектом File

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 \ сервер \ Tomcat6 \ WebApps \ Sample-сайт (отказано в доступе)
        на Java .io.FileInputStream.open (Native Method)
        на java.io.FileInputStream. (Unknown Source)
        на java.io.FileInputStream. (Unknown Source)
        в 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

Судя по StackTrace вставленной в вашем посте я предполагаю, что вы не имеют прав на чтение файла.

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

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

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

+0

Проблема заключалась в передаче каталога (как и во многих файлах) – Ankur

+0

Аналогичная проблема также обнаружена и моя ошибка 02-10 14: 18: 25.367: W/System.err (365): java.io.FileNotFoundException: /storage/emulated/0/bhanuдо_свидания.txt: open failed: ENOENT (Нет такого файла или каталога) 02-10 14: 18: 25.367: W/System.err (365) : \t на libcore.io.IoBridge.open (IoBridge.java:409) 02-10 14: 18: 25.367: W/System.err (365): \t at java.io.FileInputStream. (FileInputStream.java:78) –

3

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

3

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

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

Аналогичная проблема также я нашел, и моя ошибка 02-10 14: 18: 25.367: W/System.err (365): java.io.FileNotFoundException: /storage/emulated/0/bhanuдо_свидания.txt: open failed: ENOENT (Нет такого файла или каталога) 02-10 14: 18: 25.367: W/System.err (365): на libcore.io.IoBridge.open (IoBridge.java:409) 02-10 14: 18: 25.367: W/System.err (365): at java.io.FileInputStream. (FileInputStream.java:78) –

-1

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

+0

Оригинальный плакат уже принял ответ и объяснил причину его проблемы - он проходил путь к каталогу, а не путь к файлу. Пожалуйста, убедитесь, что вы проверяете, что другие написали, прежде чем отвечать на исторический вопрос. –