Получить FileNotFoundException при инициализации FileInputStream с помощью File object
-
14-09-2019 - |
Вопрос
Я пытаюсь инициализировать объект 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 как пользователь, у которого нет прав доступа к определенному каталогу.
Возможно, вы захотите убедиться, что (в порядке вероятности):
- Файл существует.
- Файл не является каталогом.
- У вас или процесса Java есть разрешения на открытие файла.
- Другой процесс не имеет блокировки файла (вероятно, поскольку вы, вероятно, получили бы стандартное исключение IOException вместо FileNotFoundException)
Я думаю, что вы выполняете инструкцию из eclipse или любой java IDE, и целевой файл также присутствует в рабочей области IDE.Вы получаете сообщение об ошибке, так как Eclipse не может прочитать целевой файл в той же рабочей области.Вы можете запустить свой код из командной строки.Это не должно быть каким-либо исключением.