Lettura file da riga di comando

di il
11 risposte

Lettura file da riga di comando

Ciao a tutti,
sono nuova di questo forum e ho iniziato da poco un corso all'uni di programmazione in java.Mi sono subito trovata davanti un problema che spero possiate aiutarmi a risolvere .In pratica l'sercizio che ci ha assegnato il prof dice di scrivere un programma in java che mi permetta di leggere un file con estensione txt da riga di comando.Il mio problema è che non so come leggere questo file da riga di comando ovvero non so quale istruzione utilizzare.Qualcuno riesce ad aiutarmi???Grazie mille
Elena

11 Risposte

  • Re: Lettura file da riga di comando

    Ciao, ecco un piccolo esempio per cominciare:
    
    public class TestArgomenti {
    	
    	public static void main(String[] args) {
    		int size = args.length;
    		
    		System.out.println("Argomenti forniti al programma: ");
    		for(int i=0; i<size; i++) {
    			System.out.println(args[i]);
    		}
    	}
    
    }
    
    In sostanza, tutti gli argomenti passati al programma vanno a finire in quell'array String[] args.
    Da lì puoi leggere i valori passati e utilizzarli come meglio credi.
  • Re: Lettura file da riga di comando

    Grazie minomic.Quindi nel caso in cui volessi che il mio programma legga solo 2 file basta inizializzare size a 2!Giusto?sei stato gentilissimo!!!!!!!!!!!
    Elena
  • Re: Lettura file da riga di comando

    No, attenzione! Io non ho dato un valore a size, ho solo guardato quante stringhe contenesse l'array.
    Se tu passi due argomenti, allora l'array String[] args conterrà due stringhe.
    Ad esempio da linea di comando puoi dare
    java -jar mioProgramma.jar fileA.txt fileB.txt
    In questo caso ci saranno due argomenti e l'array sarà tale che
    args[0] = "fileA.txt"
    args[1] = "fileB.txt"

    Tu poi li puoi leggere e utilizzare nel programma. Qualcosa del tipo
    apriFile (args[0]) ... 
    PS. Ovviamente apriFile è una funzione che non esiste...
  • Re: Lettura file da riga di comando

    Capisco,ma se volessi creare un programma che legga solo 2 file in input?Ovvero non permetta all'utente di inserire un solo file o più di due.Come posso fare in quel caso?
    Grazie sei gentilissimo e scusa ma sono alle prime armi
    Elena
  • Re: Lettura file da riga di comando

    Puoi fare un controllo sulle dimensioni dell'array.
    Ricavi size come nel mio primo post e poi
    if (size != 2) errore;
    else vai_avanti;
    
  • Re: Lettura file da riga di comando

    Ascolta visto che sei così gentile ne approfitto per chiederti l'ultima ultimissima cosa giuro!!!
    Se volessi mettere un ulteriore limite,ovvero imporre che il primo file abbia un'estensione xls e il secondo txt???Scusa ancora e ti ringrazio tantissimo
    Elena!!!
  • Re: Lettura file da riga di comando

    Probabilmente ti conviene crearti un metodo
    String ricavaEstensione(String nomeFile)
    che, dato il nome di un file, restituisce la sua estensione, cioè il testo dopo l'ultima occorrenza del carattere '.' (e qui c'è il suggerimento su come realizzarlo... ).
    Quando hai l'estensione puoi confrontarla con "xls" o quello che vuoi.

    Per altri problemi chiedi pure!
  • Re: Lettura file da riga di comando

    Allora ho sviluppato questo programmino:
    
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class Inserimento {
    	   
    	   public static void main(String[] args) throws IOException {
    	      int size = args.length;
    	    if(size!=2){
    	    	  System.out.println("Hai inserito un solo file");
    	      }
    	      else{
    	     
    	      for(int i=0; i<size; i++) {
    	    	  BufferedReader read = new BufferedReader(new FileReader(args[i]));
    	    	 
                      String line = read.readLine();
                      String estensione= getEstensioneFile(line);
                      
                      if(estensione.equals("txt")){
    	         System.out.println("Estensione Corretta");
                      }
                      else{
                    	  
                    	  System.out.println("Estensione non corretta");
                      }
                      read.close();
    	      }
    	     
    	      } }
    	   
    
    	   public static String getEstensioneFile(String nomeFile){
    	        return nomeFile.substring(nomeFile.lastIndexOf("."));
    	    }
    	   
    	   
    }
    
    Ma mi da un errore che allego con una jpeg.
    Help me
    Elena
    Allegati:
    Ecco l'errore che mi viene fuori!
    Ecco l'errore che mi viene fuori!
  • Re: Lettura file da riga di comando

    Ciao,
    non l'ho provato ma così dovrebbe funzionare:
    
    public static void main(String[] args) throws IOException {
    		int size = args.length;
    		if(size!=2){
    			System.out.println("Hai inserito un solo file");
    		}
    		else{
    
    			for(int i=0; i<size; i++) {
    				String estensione= getEstensioneFile(args[i]);
    
    				if(estensione.equals("txt")){
    					System.out.println("Estensione Corretta");
    				}
    				else{
    
    					System.out.println("Estensione non corretta");
    				}
    			}
    
    		}
    	}
    
    
    	public static String getEstensioneFile(String nomeFile){
    		return nomeFile.substring(nomeFile.lastIndexOf(".")+1);
    	}
    Innanzitutto nella getEstensioneFile non avevi messo il +1. Questo significa che ti restituiva anche il punto davanti all'estensione.
    Poi avevi fatto confusione con quel Reader... L'array args è già pronto per essere utilizzato!
    Comunque guarda il codice e poi ci fai sapere se hai altri dubbi.

  • Re: Lettura file da riga di comando

    Ciao minomic,
    scusa il ritardo con cui ti rispondo.Ti ringrazio moltissimo per il supporto che mi hai dato,sei stato molto gentile, chiaro e soprattutto paziente !
    Ti ringrazio ancora a presto
    Elena
  • Re: Lettura file da riga di comando

    Prego!

Devi accedere o registrarti per scrivere nel forum
11 risposte