Я хотел написать Java-программу, которая открывает некоторые терминалы, которые выполняются в каждом терминале "cd go / to / a / specitic / folder". (Я не хочу выполнять пакетный / скрипт / файл оболочки.)
Было бы здорово, если бы они могли быть независимыми от платформы. В настоящее время я работаю с Mac.
Я искал в Интернете дырочные выходные и делал x попыток с netbeans, но положительного результата не было. Одна близкая попытка, которую я нашел, была здесь http://www.coderanch.com/t/532229/java/java/Writing-terminal-Java-program.
Лучшие коды, которые я пробовал, были:
public class NewClass1 {
public static void main(String[] args) {
try {
Desktop.getDesktop().open(new File("/Applications/Utilities/Terminal.app"));
} catch (IOException ex) {
Logger.getLogger(StartDevelop.class.getName()).log(Level.SEVERE, null, ex);
}
// opens a terminal but no comments / parameters could be used
}
}
другой попыткой было изменение всего кода в основном разделе:
ProcessBuilder builder = new ProcessBuilder(
"/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal");
builder.redirectErrorStream(true);
try {
String command = "ls -lai";
Process process = builder.start();
BufferedReader read = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String s;
while ((s = read.readLine()) != null) {
System.out.println(s);
}
} catch (Exception e1) {
// TODO Auto-generated catch block
System.out.println(e1);
}
//open a terminal but command is executed in terminal
и другая альтернатива:
try {
String command = "ls -lai";
Process process = Runtime.getRuntime().exec(command);
BufferedReader read = new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
while ((s = read.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
System.out.println(e1);
}
// works with output in netbeans
// but no terminal is opening
Я также пытался использовать Outputwriter:
BufferedWriter outWrite = new BufferedWriter(
new OutputStreamWriter(process.getOutputStream(), command));
outWrite.flush();
outWrite.newLine();
но без эффекта.
Заранее спасибо.