Получение "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.
Ответы
Ответ 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: