gpt4 book ai didi

linux - 在Java程序中使用bash检查文件是否存在?

转载 作者:行者123 更新时间:2023-12-01 18:50:04 26 4
gpt4 key购买 nike

所以我正在编写一个与文件系统交互的java程序。Java程序本身不能以 super 用户身份运行。我为此程序创建了一个特殊用户,并赋予它一些特殊权限来运行一些无需密码的命令(通过 visudo 文件)。

所以我想检查文件是否存在。我用过:
if(f.exists() && !f.​​isDirectory()) 但问题是,如果我检查文件是否存在受读/写保护或者它是否属于另一个用户,则会失败。< br/>这就是为什么我需要使用 bash。例如,当我检索有关文件的信息时,我使用以下内容:
String[] command = new String[] { "sudo", "stat", 文件路径, "-c", "%F@@%s@@%U@@%G@@%X@@% Y@@%Z"};
process = runtime.exec(command); 然后解析输出。

例如移动文件,我使用这个:

String[] command = new String[] {
"sudo",
"-u",
user,
"mv",
source,
target
};

所以现在我正在寻找一种在检查文件是否存在时获得简单的真/假响应的方法。

我想我可以使用find命令或类似的命令?

最佳答案

我已经使用以下命令解决了我的问题:
String[] command = new String[] { "sudo", "-u", user, "test", "-f", path };

其中用户是我运行命令的用户。 path 是我们正在测试的文件路径。

然后我在下面的代码中读取执行和读取命令的输出。我希望有一天它能帮助别人......

process = runtime.exec(command);

errbr = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((messageLine = errbr.readLine()) != null) {
message += messageLine + ";";
}

br = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((messageLine = br.readLine()) != null) {
message += messageLine;
}

关于linux - 在Java程序中使用bash检查文件是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59755216/

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