Проверка доступа на запись в каталог перед созданием файлов внутри него
Мое небольшое служебное приложение запрашивает у пользователя выходной каталог через селектор файлов 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.