Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Unix上检查文件是否存在以及是否可从Java执行?_Java_Unix - Fatal编程技术网

如何在Unix上检查文件是否存在以及是否可从Java执行?

如何在Unix上检查文件是否存在以及是否可从Java执行?,java,unix,Java,Unix,我试图从Java进程中检查Unix中是否存在文件 我正在努力解决Runtime.getRuntime().exec() 我尝试运行的命令是test-x$VAR/path/to/file,请注意路径中的Unix变量 该命令返回0或1,但我不知道如何从Java中获取这方面的指示 我目前正在做的是: String cmd = "test -x $VAR/filename"; Process proc = Runtime.getRuntime().exec(cmd); int exitCode = pr

我试图从Java进程中检查Unix中是否存在文件

我正在努力解决
Runtime.getRuntime().exec()
我尝试运行的命令是
test-x$VAR/path/to/file
,请注意路径中的Unix变量

该命令返回0或1,但我不知道如何从Java中获取这方面的指示

我目前正在做的是:

String cmd = "test -x $VAR/filename";
Process proc = Runtime.getRuntime().exec(cmd);
int exitCode = proc.waitFor();

我还可以添加
;echo$?
到命令,它将打印0/1值,但我不知道如何获取命令的输出。

我想您正在查找并检查它的存在性以及它是否可执行

您可以使用Java.io.File类 它有方法
canExecute()
exists()

例如:

//Create new File
File file = new File("C:/test/testFile.exe");

//Check if file exists
if (file.exists()) {
    System.out.println("The File Exists");

    //Check if file is executable
    if (file.canExecute()) {
        System.out.println("The File is executable");
    }
}

File.exists()
System.getenv()
的组合应该可以做到这一点,而不需要外部进程。您的额外奖励是该解决方案也是平台独立的。Process类还有两种方法来获得输出:实际上,根据javadoc,canExecute()应该足够了,因为它还检查存在性。@Marvin-不完全是这样,如果文件存在但不可执行怎么办?@TheLostMind:我把问题理解为“我想检查两个需求,不在乎哪一个失败”。如果差异很重要,那么您当然也需要
exists()
。对于env.variables,我们可以使用
System.getenv(VAR)
请不要使用“==true”。只需使用这些方法的返回值即可。