Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Memorizzare il risultato della shell in un file!

    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!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    qualcosa del genere?
    codice:
    public static void execDir() {
            File f = new File("C:/Users/Andrea/Desktop/dir_result.txt");
            Runtime r = Runtime.getRuntime();
            try {
                String cmd = "cmd /c dir C:\\Windows";
                Process proc = r.exec(cmd);
                
                BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                BufferedWriter bw = new BufferedWriter(new FileWriter(f));           
                
                
                String line = "";
                while ((line = br.readLine())!= null) {                
                    bw.write(line+"\r\n");
                }
                bw.flush();
                bw.close();
                br.close();
                proc.destroy();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            
        }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3

    :(

    Ciao.. ho provato a fare come dici tu.. anche se è praticamente identico a quanto faccio io... e infatti anche il risultato è uguale.... se apro il file manualmente, quest'ultimo è vuoto..... come devo fare?? uff

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    il file che mi si genera è pieno. Prendi il mio codice, metti il tuo comando in cmd ed esegui. Ovviamente dovrai correggere il percorso del file di destinazione. Ho avuto qualche difficoltà a far scrivere in C: (permessi), per cui ho ovviato mettendo il file di destinazione in un percorso su cui sono sicuro di poter scrivere (in questo caso il mio desktop)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5

    yeahhhhhhhhhhhhhhhh

    Ok... ho riprovato e FUNZIONA!!!!!! grazie mille!!!!!!!

    mi dai un ultimo consiglio per favore? è meglio memorizzarlo in un file con estensione .out o in uno .txt come sto facendo adesso?? la differenza qual'è? grazie ancora

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    a te non cambia niente, txt è più intuitivo per l'utente finale, ma anche out non dà problemi.
    Un cat o l'apertura con un editor qualsiasi la fai cmq

  7. #7

    ok

    ok grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.