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

    Richiamare un comando

    ciao, innanzitutto mi riferisco su piattaforma linux...
    mi hanno detto che il comando diff mi da in output la differenza che c'è tra 2 file...
    ad esempio file1.txt e file2.txt in output dovrebbe darmi esattamente le righe che differiscono i due file...
    ora il mio problema:
    come faccio a richiamare questo comando da java? e come faccio a prendermi l'output che mi da ed eventualmente scrivere l'output stesso in un altro file?
    grazie
    stex1984

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    56
    La classe Runtime ha il metodo exec(String cmd), che avvia un processo e restituisce un oggetto Process.
    L'oggetto Process ha il metodo getInputStream che ti restituisce un InputStream da cui leggere l'output prodotto.
    Poi crei un file, prendi il suo FileWriter e ci scrivi dentro.
    codice:
    StringBuffer sb=new StringBuffer();
    try {
         Process diff=Runtime.getRuntime().exec("diff file1.txt file2.txt");
         BufferedInputStream out=new BufferedInputStream(diff.getInputStream());
         byte[] buffer=new byte[1000];
         int numbytes;
         while((numbytes=out.read(buffer)) != -1 ) {
              sb.append(new String(buffer, 0, numbytes));
         }
    }
    catch (IOException ioe) {
         System.out.println("IOException: impossibile eseguire diff");
    }
    try {
         output=new BufferedWriter(new FileWriter(new File("diff.txt")));
         output.write(sb.toString());
    }
    finally {
         if (output != null) output.close();
    }
    Oppure, molto più semplicemente, puoi usare la redirezione dell'output del sistema operativo, mandando lo standard output su file anziché su schermo.
    codice:
    try {
         Process diff=Runtime.getRuntime().exec("diff file1.txt file2.txt > diff.txt");
    }
    catch (IOException ioe) {
         System.out.println("IOException: impossibile eseguire diff");
    }

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.