Выполнение команды Linux из Java с использованием метода exec ('command') - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь выполнить команду Linux из своего java-класса, используя метод exec () из класса Runtime следующим образом:

public static String xxUtilInfoFile  (String sPath , String sFileName) throws Exception
{            
    Runtime r = null;
    Process p = null;   
    String line_value="";
    String output_data="";

    /*execute the process*/
    r = Runtime.getRuntime();
    p = r.exec("file -bi " + sPath + sFileName);
    p.waitFor();

    /*Return the standard error output*/
    BufferedReader in=new BufferedReader(new InputStreamReader(p.getInputStream()));
    output_data = in.readLine();

    return output_data;        
}

Команда Linux, которую я хочу использовать, - file -bi fileName ион работает хорошо, за исключением случая, когда внутри fileName есть пробелы, и в этом суть.

Я уже пытался использовать двойные кавычки и обратную косую черту (\), потому что этот метод работает в консоли Linux bash, но он не запускается, если я передаю его в качестве аргумента метода exec.

Может ли кто-нибудь помочь мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Возможно, вам следует передать массив Strings методу exec () в строке 9 вашего кода:

p = r.exec(new String[]{ "file", "-bi", sPath, sFileName});
0 голосов
/ 18 октября 2019

Может быть, вы можете использовать класс ProcessBuilder.

...