Мое небольшое приложение-утилита запрашивает у пользователя выходной каталог через селектор файлов GUI. Затем он создает много файлов в этом выходном каталоге после некоторой обработки.
Мне нужно проверить, имеет ли приложение доступ на запись, чтобы он информировал пользователя и делал не продолжайте обработку (что может занять много времени)
Моя первая попытка - метод canWrite() java.io.File. Но это не работает поскольку он касается самой записи каталога, а не ее содержимого. Я видел хотя бы один экземпляр папки Windows XP, которую можно переименовать или удалить, но файлы не могут быть созданы в нем (из-за разрешений). Это на самом деле моя тестовая версия.
Наконец, я решил следующее решение
//User places the input file in a directory and selects it from the GUI
//All output files will be created in the directory that contains the input file
File fileBrowse = chooser.getSelectedFile(); //chooser is a JFileChooser
File sample = new File(fileBrowse.getParent(),"empty.txt");
try
{
/*
* Create and delete a dummy file in order to check file permissions. Maybe
* there is a safer way for this check.
*/
sample.createNewFile();
sample.delete();
}
catch(IOException e)
{
//Error message shown to user. Operation is aborted
}
Однако это не кажется мне элегантным, поскольку он просто пытается создать файл и проверяет, успешно ли выполнена операция.
Я подозреваю, что для этого должен быть лучший способ, но все решения, которые я нашел до сих пор с менеджерами по безопасности и т.д. с Java-апплетами, а не с автономными приложениями. Я что-то пропустил?
Каков рекомендуемый способ проверки доступа к файлам внутри каталога до на самом деле писать файлы?
Я использую Java 5.