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 回答