我正在尝试检查文件是否可写。我已经为所有用户自行更改了文件权限。但如果我尝试运行程序,它会显示“true”作为响应。如果我允许权限,那么它也显示“true”。
什么是我的问题?
try
{
File file = new File("D:/myproject_log/delivery_report_edr.out");
if(!file.canWrite())
{
System.out.println("you can't write!!!");
}
else
System.out.println("you can write!!!");
}
catch(Exception e)
{
e.printStackTrace();
}
答案 0 :(得分:2)
工作正常。我复制了你的代码并运行了两次。首先我得到你可以写,然后右键单击文件夹,转到属性并选择只读并再次运行程序,我得到你可以'写下
因此,根据 canWrite()方法的文档,它给了我预期的输出。请再次确认您的设置并检查。
答案 1 :(得分:1)
您是否尝试过使用java.nio.file.Files#isWritable方法。以及File#canWrite?
答案 2 :(得分:0)
我还发现,File.canWrite()
无法信任,特别是在网络驱动器上,即使文件写入失败,也常常返回true
,反之亦然。我制作了自己的方法,实际上尝试将一个虚拟文件写入dir。写起来很简单,万无一失。也许他们修好了。
答案 3 :(得分:0)
我遇到了与c:\ programFiles \文件夹中的文件相同的问题,并且File.canWrite方法返回true并且我得到了相同的异常。 当我更改了对于在Folder属性的安全选项卡中定义的USER允许为true的权限时,它没有给我任何例外。