Java-Доступ запрещен java.Ио.FileNotFoundException [дубликат]

этот вопрос уже есть ответ здесь:

  • Ява.Ио.Исключение filenotfoundexception: (отказано в доступе) 4 ответы

у меня есть следующий код:

List<FileItem> items = uploadHandler.parseRequest(request);
for (FileItem item : items) {
    if (!item.isFormField()) {
        File file = new File("D:/Data");
    }
}

когда я пытаюсь сохранить файл, я получаю следующую ошибку

java.io.FileNotFoundException: D:Data (Access is denied.)

что может быть причиной и как могу я это решить? У меня есть разрешение на чтение и запись в эту папку.

5 ответов


при создании нового File, вы должны указать имя файла, а не только каталог, в который вы хотите поместить свой файл.

попробуйте что-то вроде

File file = new File("D:/Data/" + item.getFileName());

не совсем случай этого вопроса, но может быть полезным. Я получил это исключение, когда я вызываю mkdirs () в новом файле вместо его родителя

File file = new java.io.File(path);
//file.mkdirs(); // wrong! 
file.getParentFile().mkdirs(); // correct!
if (!file.exists()) {
    file.createNewFile();
} 

у меня поиск этой проблемы и я получил следующие ответы:

  1. "C:\Program Files\Apache-tomcat-7.0.69\" удалите дополнительную обратную косую черту (\)
  2. щелкните правой кнопкой мыши папку журнала в папке tomcat и на вкладке Безопасность дайте этой папке разрешение на запись, а затем перезапустите net-beans как запуск от имени администратора.

ваша проблема будет решена


вам нужно установить разрешение для пользовательских элементов управления .

  1. Гото C:\Program Файлы\
  2. щелкните правой кнопкой мыши папку java, выберите Свойства. Выберите вкладку Безопасность.
  3. там, нажмите на кнопку" Изменить", которая будет всплывать разрешения для окна JAVA.
  4. нажмите Add, в котором появится новое окно. В этом случае в поле" Введите имя объекта " введите имя учетной записи пользователя и нажмите ладно(если уже существует, пропустите этот шаг).
  5. сейчас в Окно "разрешения JAVA", вы увидите несколько кликабельных параметры, такие как CREATOR OWNER, SYSTEM, среди них ваш имя пользователя:. Нажмите на него и отметьте опцию "полный контроль" в Разрешения для подокна.
  6. наконец, нажмите Применить и ОК.

убедитесь, что каталог существует, у вас есть разрешение на доступ к нему и добавьте файл в путь для записи журнала:

File file = new File("D:/Data/" + item.getFileName());