-1

我正在使用下面的代码,但它不起作用。canWrite()即使更改目录的写入权限,该方法也不起作用。

File file = new File(fc.getSelectedFile().getAbsolutePath());
// fc is a FileChooser object
if(f.canWrite()) 
{
  // write access
} 
else 
{
  // no write access
}

我也试过:

try 
{
    AccessController.checkPermission(new FilePermission("/tmp/*", "read,write"));
    System.out.println("Good");
    // Has permission
}
catch (SecurityException e) 
{
// Does not have permission
System.out.println("Bad");
}
4

1 回答 1

1

File.canWrite()方法的行为与其规范所说的一样:

返回:true当且仅当文件系统实际包含由该抽象路径名表示的文件并且允许应用程序写入该文件时;false否则。

(强调补充)。

它正在返回false,因为该对象不是文件。


如果您使用的是 Java 7(或更高版本),一种解决方案是使用Files.getAttribute检索相关属性来确定访问权限。请注意,您使用的属性可能是特定于操作系统的。(我相信 Google 可以为您找到示例。)

于 2013-01-28T09:23:03.270 回答