Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Java]Reindirizzamento

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    41

    [Java]Reindirizzamento

    Salve,

    dovrei fare in modo che la mia funzione di apertura file riceva in input il file di output di un altro programma.

    Il codice è il seguente:

    codice:
    public void OpenFile(String[] args) throws IOException{
    		
               System.out.print("Enter the path of the directory: ");
           
               String NameDirectory = new String(new BufferedReader(new InputStreamReader(System.in)).readLine());
               File Directory = new File(NameDirectory);
               
               if(Directory.isDirectory()){
                    File[] files = Directory.listFiles();
                    for (int i = 0; i < files.length; i++){
                        if (!files[i].isDirectory()){
                            System.out.println(files[i].getAbsolutePath());
             
                            try {
    
                                br = new BufferedReader(new FileReader(files[i])); 
                                line = br.readLine();
    
                                while((line.contains("---")) || (line.isEmpty())){
                                     line = br.readLine();
                                }
                
                            }catch(IOException ex){
                                System.out.println(ex.getMessage());
                             }
    							
                        }
                    }
               }
            }
    I file che devo leggere sono compattati in formato gzip, quindi lancio il prog da linea di comando facendo nel seguente modo:

    zcat nome.gzip | java -jar nomeprogramma.jar

    così il programma deve ricevere come ingresso il file contenuto nel file .gzip

    Sapete come posso modificare la mia funzione

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java]Reindirizzamento

    Originariamente inviato da markg
    zcat nome.gzip | java -jar nomeprogramma.jar

    così il programma deve ricevere come ingresso il file contenuto nel file .gzip

    Sapete come posso modificare la mia funzione
    Nel sorgente sopra chiedi in input sullo standard-input (System.in) un nome di directory. Facendo il "piping", ovviamente questo non puoi più farlo.
    Perché sullo standard-input ci sarà direttamente il contenuto del file estratto da zcat. Se il file sai che è di testo e vuoi leggere "a righe", beh, crei un InputStreamReader passando System.in e poi un BufferedReader.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    41
    ho modificato il programma nel seguente modo:

    codice:
    public void OpenFile(String[] args) throws IOException{
    		
               String Path = new String(new InputStreamReader(new BufferedReader(System.in)).readLine());
               File Directory = new File(Path);
               
               if(Directory.isDirectory()){
                    File[] files = Directory.listFiles();
                    for (int i = 0; i < files.length; i++){
                        if (!files[i].isDirectory()){
                            System.out.println(files[i].getAbsolutePath());
             
                            try {
    
                                br = new BufferedReader(new FileReader(files[i])); 
                                line = br.readLine();
    
                                while((line.contains("---")) || (line.isEmpty())){
                                     line = br.readLine();
                                }
                
                            }catch(IOException ex){
                                System.out.println(ex.getMessage());
                             }
    							
                        }
                    }
               }
            }
    è questo che intendevi?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    41
    Ho notato che lanciando il comando zcat, non passa al programma java il path del file ma il suo contenuto.

    Quindi devo trovare un modo per inserire in ingresso al programma queste righe.
    Ho provato con System.in ma viene letta solo la prima riga che passa zcat.

    Come posso fare per farmi passare anche le altre righe?

    Grazie

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da markg
    non passa al programma java il path del file ma il suo contenuto.
    E io cosa avevo detto prima?

    Originariamente inviato da markg
    Quindi devo trovare un modo per inserire in ingresso al programma queste righe.
    Ho provato con System.in ma viene letta solo la prima riga che passa zcat.

    Come posso fare per farmi passare anche le altre righe?
    Ok, allora chiariamo le cose: zcat fa la stessa cosa di gunzip -c (lo dice la documentazione). Il -c indica di estrarre il file sullo standard-output.

    Quindi zcat prende il file gzip e lo decomprime mandando il contenuto sullo standard-output. Se fai il piping, questo standard-output viene inviato per intero sullo standard-input del processo che segue il |. Chiaro?

    Quindi non puoi più chiedere in input dallo standard-input nomi di file o directory o altro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    41
    Questo l'ho capito, quindi ho modificato il prgramma inserendo System.in, soltanto che legge solo la prima riga contenuta nel file.

    Le altre righe non riesco a leggerle.

    Come posso fare?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da markg
    Le altre righe non riesco a leggerle.

    Come posso fare?
    Chiaramente devi fare un loop:

    codice:
    String line;
    
    while ((line = br.readLine()) != null)
    {
        // ......
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    41
    ho risolto

    grazie per la disponibilità

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.