在目录中创建文件之前检查目录中的写入访问权限
2022-09-01 13:23:11
我的小型实用程序应用程序通过 GUI 文件选择器向用户询问输出目录。然后,经过一些处理后,它会在此输出目录中创建大量文件。
我需要检查应用程序是否具有写入访问权限,以便它通知用户并且不继续处理(这可能需要很长时间)
我的第一次尝试是java.io.File的canWrite()方法。但这不起作用,因为它处理的是目录条目本身,而不是其内容。我见过至少一个可以重命名或删除的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
}
但是,这对我来说并不优雅,因为它只是尝试实际创建一个文件并检查操作是否成功。
我怀疑一定有更好的方法,但是到目前为止,我在Security Managers和其他东西中发现的所有解决方案都与Java小程序而不是独立应用程序有关。我错过了什么吗?
在实际写入文件之前,检查目录内文件访问的推荐方法是什么?
我使用的是Java 5。