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