У меня есть приложение Java, которое выполняет команду с использованием Runtime.getRuntime.exec("command");
Затем он генерирует файл, который мне нужно прочитать, чтобы найти строку, все в порядке до сих пор.Приложение Java не читает из файла при выполнении команды с Runtime.getRuntime()
Проблема заключается в том, что программа не может найти заданную строку после выполнения этой команды, но если я закомментирую строку Runtime.getRuntime.exec("command");
после запуска приложения в первый раз и далее выполняется, и файл создается, он находит строку должным образом. Похоже, getRuntime()
останавливается с работы fileReader
по какой-то причине. Кто-нибудь знает, как это исправить?
public static void main(String[] args) throws IOException{
String[] command = new String[3];
command[0] = "cmd.exe";
command[1] = "/c";
command[2] = "C:\\Users\\kjdah\\Desktop\\handle.exe -a > C:\\Users\\kjdah\\Desktop\\handles.txt";
Runtime.getRuntime().exec(command);
String toFind = "##?#USB#VID_04F2&PID_B2E1&MI_00#6&9f9977c&0&0000#";
File file = new File("C:\\Users\\kjdah\\Desktop\\handles.txt");
boolean found = false;
String strLinePid = null;
try {
FileReader fstream = new FileReader(file);
BufferedReader buffer = new BufferedReader(fstream);
String strLine;
while ((strLine = buffer.readLine()) != null) {
if(strLine.contains("pid:")){
strLinePid = strLine;
}
if(strLine.contains(toFind)){
found = true;
break;
}
}
buffer.close();
fstream.close();
}
catch (Exception e){
System.err.println("An error happened: " + e.getMessage());
e.printStackTrace();
}
`
Это было быстро! Nice one mm759 Я только что сохранил процесс и добавил .waitfor(); это сработало. Вы сделали свой день, ура! ;) – Tofetopo