Ciao a tutti!
Ho bisogno di memorizzare il risultato di un comando shell in un file di testo; mi spiego meglio: ho una classe java da cui apro la shell di windows e con un comando eseguo un programma... il comando è il seguente:
codice:
String command = "C:\\dlv.exe -nofacts C:\\" + nome_file+".txt";
il programma dlv prendo "in pasto" un file, lo esegue e restituisce un risultato che voglio memorizzare in un file, supponiamo "risultati.txt".
il codice che utilizzo è il seguente:
codice:
String command = "C:\\dlv.exe -nofacts C:\\" + nome_file+".txt";
File outputFile = new File("src\\FILE_OUTPUT\\risultati.txt");
FileOutputStream fileOut;
try {
fileOut = new FileOutputStream(outputFile);
OutputStreamWriter scrivoOutFile = new OutputStreamWriter(fileOut);
Runtime run= Runtime.getRuntime();
try {
Process processo = run.exec(command);
String line = "";
BufferedReader input = new BufferedReader(new InputStreamReader(processo.getInputStream()));
OutputStream outS=processo.getOutputStream();
OutputStreamWriter outSW = new OutputStreamWriter(outS);
while ((line = input.readLine()) != null) {
scrivoOutFile.append(line+"\n");
scrivoOutFile.flush();
if(line.equals("")){
outSW.write("n \n");
outSW.flush();
outSW.write("n \n");
outSW.flush();
}
}
input.close();
outS.close();
scrivoOutFile.close();
processo.destroy();
run.gc();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
leggiFileOutput();
dove il metodo leggiFileOutput(); è questo:
codice:
File risultato = new File(".\\src\\FILE_OUTPUT\\risultati.txt");
try {
FileInputStream file = new FileInputStream(risultato);
InputStreamReader input = new InputStreamReader(file);
BufferedReader reader = new BufferedReader(input);
String linea = reader.readLine();
FileOutputStream fos = new FileOutputStream(risultato);
PrintStream print = new PrintStream(fos);
while((linea = reader.readLine()) != null )
{
System.out.println(linea);
print.println();
print.println();
}
file.close();
input.close();
print.flush();
print.close();
reader.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
vi chiederete cosa c'è che non va... bhe la stampa del contenuto del file risultati.txt avviene correttamente (visualizzo sulla console lo stesso risultato che visualizzerei se lanciassi "manualmente" la shell ed eseguissi il comando iniziale)... il problema riguarda il fatto che se apro il file risultati.txt manualmente (con doppio clic) il file mi risulta vuoto... come è possibile? se fosse vuoto non stamperebbe nulla..! ho provato a fare f5 per aggiornare ma niente.. file vuoto... cosa sbaglio?
aiutatemi please... è un problema stupido ma ci sto sbattendo la testa da giorni!!
ciao!