1

いくつかのディレクトリとファイルを作成する必要があり、それらすべてに権限0600が必要です。NetBeans
デバッグから実行する場合:ディレクトリを作成した後、そこにいくつかのファイルを保存しようとするとIOException、ディレクトリとファイルの両方が作成されているときに「アクセスが拒否されました」というメッセージが表示されます。同じアプリケーションで同時に同じユーザーであるため、0600(所有者の読み取り/書き込み)が機能するはずです。
また、Jarファイルを実行すると、chmodがまったく機能しなくなります。私のコードは次のとおりです。

if(!Dest.exists()){
   boolean res=dirs.mkdirs();
   if(res){
      Runtime.getRuntime().exec("chmod -R 600 '"+dirs.getAbsolutePath()+"'");                
    }
}
File Destination=new File(Dest, source.getName());
documentManager.copyFile(source, Destination);

copyFileは次のとおりです。

public static void copyFile(File sourceFile, File destFile) throws FileNotFoundException,IOException {
    if(!destFile.exists()) {
        destFile.createNewFile();
    }

    FileChannel source = null;
    FileChannel destination = null;
    try {
        source = new FileInputStream(sourceFile).getChannel();
        destination = new FileOutputStream(destFile).getChannel();
        destination.transferFrom(source, 0, source.size());
    }
    finally {
        if(source != null) {
            source.close();
        }
        if(destination != null) {
            Runtime.getRuntime().exec("chmod 600 '"+destFile.getAbsolutePath()+"'");
            destination.close();
        }
    }
}

どうしたの?

ありがとう

4

3 に答える 3

2

ファイルをディレクトリに書き込むには、ディレクトリに実行可能ビットを設定する必要があります。ディレクトリで chmod +x を試してください。

mkdir tmp2323
chmod a-x tmp2323
touch tmp2323/test
touch: cannot touch `tmp2323/test': Permission denied
于 2012-07-31T10:05:29.077 に答える
1

すべてのために:

dirs.setWritable(true, false);

所有者のみ:

dirs.setWritable(true, true);

また

dirs.setWritable(true);
于 2013-02-21T19:32:37.447 に答える
-1

chmod 777 /home自宅でファイルを作成したい場合は、実行してください。/homeそれ以外の場合は、別のディレクトリに変更してください。次に、単純なコードでファイルを作成できます。

于 2014-01-30T05:41:41.073 に答える