File.canWrite没有按预期工作

时间:2012-03-21 14:10:02

标签: java java-io

我正在尝试检查文件是否可写。我已经为所有用户自行更改了文件权限。但如果我尝试运行程序,它会显示“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();
  }

4 个答案:

答案 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的权限时,它没有给我任何例外。