12

コード:

File dir = new File(path);
boolean rc1 = dir.setExecutable(true, false);
boolean rc2 = dir.setReadable(true, false);
boolean rc3 = dir.setWritable(true, false);
if (!rc1 || !rc2 || !rc3){
    logger.warn("One of the permissions set returned false: rc1="+rc1+" rc2="+rc2+" rc3="+rc3 + " [for dir '"+dir+"']");
}

Ubuntu では、3 つの呼び出しすべてが false を返します。私の Windows では、setWritable への 3 回目の呼び出しのみが false を返します。

ターゲットは、ファイル/ディレクトリを作成して、ユーザー (tomcat) とグループが読み取り/書き込みできるようにすることです。
しかし、グループが書き込む権限なしでUbuntuで作成されたファイル。

4

4 に答える 4

16


ファイルまたはディレクトリにアクセス許可を設定するときは、まず実際にディレクトリを作成するかファイルを書き込んでから、アクセス許可を設定する必要があります。
だから、私が最初にやっていたことは間違っていました:

File dir = new File(path);
boolean rc1 = dir.setExecutable(true, false);

実際には次のことが必要です。

File dir = new File(path);
dir.mkdirs();
boolean rc1 = dir.setExecutable(true, false);
boolean rc2 = dir.setReadable(true, false);
boolean rc3 = dir.setWritable(true, false);

また

    File f = new File(uploadedFileLocation);
    ImageIO.write(image, "jpg", f);
    boolean rc1 = f.setExecutable(true, false);
    boolean rc2 = f.setReadable(true, false);
    boolean rc3 = f.setWritable(true, false);

その後、それは動作します:)

于 2012-12-27T11:55:15.103 に答える
2

Linux でスーパー ユーザーとしてこれを実行していない可能性があります。あなた (ログインしているユーザー) 自体が、ファイルのアクセス許可を与える権限を持っていない可能性があります。

于 2012-12-27T09:42:11.070 に答える