Выполнение команды cat из Java-программы не работает должным образомJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Выполнение команды cat из Java-программы не работает должным образом

Сообщение Anonymous »

Я пытаюсь использовать команду cat из Java-программы, чтобы объединить два файла в один. Строка кода, содержащая команду cat, принимает два файла file1 и file2 и записывает их в третий файл, называемый комбинированным файлом. Однако я наблюдаю, что вместо создания этого файла (комбинированного файла) и записи в него моя программа просто отображает выходные данные на терминале.

Как я могу убедиться, что два файла действительно скопированы в третий файл.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ExecuteShellCommand
{

public static void main(String[] args)
{

ExecuteShellCommand obj = new ExecuteShellCommand();

String command = "cat file1 file2 > combinedfile";

String output = obj.executeCommand(command);

System.out.println(output);

}

private String executeCommand(String command)
{

StringBuffer output = new StringBuffer();

Process p;
try
{
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line = "";

while ((line = reader.readLine())!= null)
{
output.append(line + "\n");
}

} catch (Exception e) {
e.printStackTrace();
}

return output.toString();

}

}


РЕДАКТИРОВАТЬ:

Я попробовал использовать ProcessBuilder, как было предложено, но получил эту ошибку.
Код

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.*;
import java.util.*;

public class ExecuteShellCommand
{
public static void main(String[] args)
{
try
{
ProcessBuilder builder = new ProcessBuilder("cat", "/home/PepperBoy/Desktop/file1.txt","/home/PepperBoy/Desktop/file2.txt");
File combinedFile = new File("/home/PepperBoy/Desktop/file3.txt");
builder.redirectOutput(combinedFile);
builder.redirectError(combinedFile);
Process p = builder.start();
}
catch(IOException e)
{
e.printStackTrace();
}

}
}


Ошибка

ExecuteShellCommand.java:14: cannot find symbol
symbol : method redirectOutput(java.io.File)
location: class java.lang.ProcessBuilder
builder.redirectOutput(combinedFile);


Подробнее здесь: https://stackoverflow.com/questions/306 ... s-expected
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»