gpt4 book ai didi

java - 无法从 Java 程序中更改文件权限

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:28 25 4
gpt4 key购买 nike

我有一个 Java 程序,它在运行时将一些可执行文件提取到特定文件夹,并尝试运行它们。当然,在运行可执行文件之前,需要更改其权限。为此,我使用了以下代码:

public static void changePermissions(String filename,String path){
String[] cmd=new String[3];
cmd[0]="chmod";
cmd[1]="u+x";
cmd[2]=filename;
BetterRunProcess process=new BetterRunProcess();
process.runProcessBuilderInDifferentDirectory(cmd,path,1,0,0,"");
}

在上面的代码片段中,变量路径包含可执行文件的路径,文件名是可执行文件的名称。线路:

process.runProcessBuilderInDifferentDirectory(cmd,path,1,0,0,"");

执行命令“chmod u+x ...”。在我自己的电脑上,代码运行得很好,但是当我在别人的电脑上运行时,抛出以下错误:

chmod: changing permissions of deviceQuery.out. Operation not permitted. 

有人能弄清楚这背后的问题是什么吗?

这里还有一些代码,可能会有帮助。

public void runProcessBuilderInDifferentDirectory(String[] cmd,String path,int printToConsole,int printToExternalFile,int append,String fileName){
ProcessBuilder builder;
if(cmd.length==1) builder=new ProcessBuilder(cmd[0]);
else if(cmd.length==2) builder=new ProcessBuilder(cmd[0],cmd[1]);
else if(cmd.length==3) builder=new ProcessBuilder(cmd[0],cmd[1],cmd[2]);
else if(cmd.length==4) builder=new ProcessBuilder(cmd[0],cmd[1],cmd[2],cmd[3]);
else builder=new ProcessBuilder(cmd[0],cmd[1],cmd[2],cmd[3],cmd[4]);

builder.directory(new File(path));
try {
Process pr=builder.start();
if(printToConsole==1) printToConsole(pr);
if(printToExternalFile==1) printToExternalFile(pr,fileName,append);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

谢谢!

最佳答案

从具有该文件权限的用户运行您的 java 代码。

关于java - 无法从 Java 程序中更改文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43950400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com