所以我正在编写一个与文件系统交互的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/