Parsing file di testo

di il
25 risposte

25 Risposte - Pagina 2

  • Re: Parsing file di testo

    Ho fatto in questo modo ma va in esecuzione , non stampa nulla e resta in esecuzione.
    public static void main(String[] args) throws IOException    {
    		// TODO Auto-generated method stub
    
    	
    		BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("prova.rtf") ) );
    		String line = br.readLine();
    		while(line!=null) {
    			int inizio = line.indexOf("Found a flow");
    			int fine = line.indexOf("Maximum");
    			while(inizio != -1 && fine != -1){
    			System.out.println(line.substring(inizio, fine));}
    		}
    		
    		
    		
    	}
    
    }
    
  • Re: Parsing file di testo

    Ciao, il "macello" di cui parla andbin è questo: (nota che il solo testo contenuto è "Hello, RTF!")
    
    \rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
    {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
    {\colortbl;\red255\green255\blue255;}
    \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
    \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
    
    \f0\fs24 \cf0 Hello, RTF!}
    
  • Re: Parsing file di testo

    Wow ma se cambio l'estensione del file da .rtf a txt ? Continuo ad avere lo stesso problema?
  • Re: Parsing file di testo

    Sì, dovresti ricreare l'intero file direttamente in .txt oppure eliminare manualmente queste linee di formattazione e rinominare il file in .txt
  • Re: Parsing file di testo

    Capito. Della ma mi dici gentilmente come risolvere l'eccezione?
  • Re: Parsing file di testo

    Beh il tuo programma rimane in esecuzione perché non esce mai dal while più esterno: non cambi mai valore alla variabile "linea", per cui se essa è == nulla allora il programma termina subito, altrimenti va avanti all'infinito. Idem per il loop interno: se inizio e fine sono entrambi diversi da -1 allora stamperanno all'infinito la stringa, altrimenti non la stamperanno mai.
  • Re: Parsing file di testo

    Ho fatto in questo modo
    public static void main(String[] args) throws IOException    {
    		// TODO Auto-generated method stub
    
    	
    		BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("prova.rtf") ) );
    		String line = br.readLine();
    		while(line!=null) {
    			int inizio = line.indexOf("Found a flow");
    			int fine = line.indexOf("Maximum");
    			if(inizio >0 && fine >0){
    			System.out.println(line.substring(inizio, fine));
    			}
    			else
    				return;
    		}
    		
    	}
    
    }
    Adesso il programma termina, ma non stampa nulla
  • Re: Parsing file di testo

    Probabilmente il file di testo non contiene almeno uno dei due "marcatori" (per cui inizio e/o fine sono uguali a -1) oppure il marcatore iniziale è esattamente all'inizio del file (per cui inizio è uguale a 0) e di conseguenza il programma passa dal ramo "else", uscendo subito senza stampare nulla. Nota che se comunque l'if fosse vero allora avresti un (doppio) loop infinito esattamente come prima
  • Re: Parsing file di testo

    Capito..grazie
  • Re: Parsing file di testo

    MacGigi ha scritto:


    		String line = br.readLine();
    		while(line!=null) {
    
    Per tua conoscenza, l'idioma tipico di uso di readLine è questo:
    String line;
    
    while ((line = br.readLine()) != null) {
        // usa line
    }
    Questo assicura che legge tutte le righe fino alla corretta fine del file che fa terminare il ciclo.

    Se però la parte da estrarre "spanna" su più righe, questo approccio diventa poco pratico e utile. Allora sarebbe meglio leggere l'intero documento per averlo in un unico grosso String. Per fare questo basta leggere a blocchi di N char e appenderli in un StringBuilder/StringBuffer.
  • Re: Parsing file di testo

    Perfetto siete stati gentilissimi grazie
Devi accedere o registrarti per scrivere nel forum
25 risposte