Подтвердить что ты не робот

Получение "java.nio.file.AccessDeniedException" при попытке записи в папку

По какой-то причине я продолжаю получать java.nio.file.AccessDeniedException каждый раз, когда пытаюсь записать в папку на своем компьютере с помощью веб-приложения java на Tomcat. Эта папка имеет полный набор прав доступа для всех на моем компьютере (Windows). Кто-нибудь знает, почему я получаю это исключение?

Вот мой код:

public void saveDocument(String name, String siteID, byte doc[]) {
    try {
        Path path = Paths.get(rootDirectory + siteID);
        if (Files.exists(path)) {
            System.out.println("Exists: " + path.toString());
            Files.write(path, doc);
        } else {
            System.out.println("DOesn't exist");
            throw new Exception("Directory for Site with ID " + siteID + "doesn't exist");
        }
    } catch (FileSystemException e) {
        System.out.println("Exception: " + e);
        e.printStackTrace();
    } catch (IOException e ) {
        System.out.println("Exception: " + e);
        e.printStackTrace();
    } catch (Exception e) {
        System.out.println("Exception: " + e);
        e.printStackTrace();
    }

И вот ошибка:

Исключение: java.nio.file.AccessDeniedException: C:\safesite_documents\site1 java.nio.file.AccessDeniedException: C:\safesite_documents\site1 в sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83) в sun. nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) в sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) в sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:2).nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:430) в java.nio.file.Files.newOutputStream(Files.java:172) в java.nio.file.Files.write(Files.java:3092) )

Возможная причина: см. Мой пост в supersuser о том, как я не могу снять флажок "Только чтение" для любой из моих папок в Windows 7. Даже если все папки не читаются только для чего-либо, кроме java.

4b9b3361

Ответ 1

Хорошо, оказывается, я делал что-то глупое. Я не добавил новое имя файла к пути.

я имел

rootDirectory = "C:\\safesite_documents"

но это должно было быть

rootDirectory = "C:\\safesite_documents\\newFile.jpg" 

Извините, это была глупая ошибка, как всегда.

Ответ 2

Я получал ту же ошибку при попытке скопировать файл. Закрытие канала, связанного с целевым файлом, решило проблему.

Path destFile = Paths.get("dest file");
SeekableByteChannel destFileChannel = Files.newByteChannel(destFile);
//...
destFileChannel.close();  //removing this will throw java.nio.file.AccessDeniedException:
Files.copy(Paths.get("source file"), destFile);

Ответ 3

Не ответ на этот вопрос

Я получил это исключение при попытке удалить папку, в которой я удалил файл внутри.

Пример:

createFolder("folder");  
createFile("folder/file");  
deleteFile("folder/file");  
deleteFolder("folder"); // error here

Хотя deleteFile("folder/file"); вернул, что он был удален, папка будет считаться пустой только после перезапуска программы.

В некоторых операционных системах может быть невозможно удалить файл, когда он открыт и используется этой виртуальной машиной Java или другими программами.

https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#delete-java.nio.file.Path-

Объяснение от дхке

Ответ 4

Удалите файлы кэша папок .android. Также вручную удалите папку сборки из каталога, откройте android studio и снова запустите.

enter image description here

Ответ 5

Я также получаю похожую ошибку. Ниже мой код

Запуск ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) через порт 41336 Разрешены только локальные подключения. Исключение в потоке "main" org.openqa.selenium.WebDriverException: java.nio.file.AccessDeniedException: C:\Users\lenovo\AppData\Local\Temp\new-session16540474514977099033.json Информация о сборке: версия: '3.6.0', редакция: '6fbf3ec767', время: '2017-09-27T15: 28: 36.4Z' Информация о системе: хост: 'DESKTOP-MTCD90O', ip: '192.168.0.109', имя os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0 ', java.version:' 9.0.1 'Информация о драйвере: driver.version: ChromeDriver в org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java): 92) на org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:586) на org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:217) на org.opiumq.a. RemoteWebDriver. (RemoteWebDriver.java:140) в org.openqa.selenium.chrome.ChromeDriver. (ChromeDriver.java:181) в org.openqa.selenium.chrome.ChromeDriver. (ChromeDriver.java:168qa.ag или selenium.chrome.ChromeDriver. (ChromeDriver.java:123) на com.internethe ro.internetheropjct.slider.main(slider.java:21) Причина: java.nio.file.AccessDeniedException: