-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(またはそれ以降)を使用している場合、1つの解決策はFiles.getAttribute、アクセスを決定するために関連する属性を取得するために使用することです。使用する属性はオペレーティングシステム固有である可能性があることに注意してください。(Googleがあなたのための例を見つけることができると確信しています。)

于 2013-01-28T09:23:03.270 に答える