Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    127

    [Java] lettura da file di testo fallita

    ragazzi sto impazzendo.

    ho un action listener che mi richiama un metodo di lettura da file il quale dovrebbe restituire una stringa contentente il testo del file.

    ecco il mio metodo :

    codice:
    public static String leggiFile (String nomeFile) throws IOException{
    	  
    	
    	    File f=new File(nomeFile);
    	    FileInputStream fis=new FileInputStream(f);
    	    InputStreamReader isr=new InputStreamReader(fis);
    	    BufferedReader br=new BufferedReader(isr);
    	    String linea=br.readLine();
    	    while(linea!=null) {
    	           System.out.println(linea);
    	           linea=linea+br.readLine();
    	    }
    	    return linea;
    il return è sempre null....
    nomeFile è corretto al 100%

    ho provato ad usare FileReader, a dare tutti i permessi, ma sembra funzionare in maniera random, solo qualche volta ha restituito il file....

    uso eclipse sotto linux da root può essere un problema legato ai permessi ??

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

    Re: [Java] lettura da file di testo fallita

    Originariamente inviato da tulkas85
    il return è sempre null....
    Beh, innanzitutto come vorresti fare concettualmente così perdi i "newline". E concatenare con l'operatore + ogni volta è molto inefficiente, man mano che la stringa si ingrossa.

    E comunque il ciclo è concettualmente sbagliato. Ammesso che la prima riga non sia null, entri nel ciclo. Ma quando esci??? Quando linea diventa null .... ma se non era null all'inizio non lo diventa mai perché concateni con + e se readLine() ritorna null tu concateni la stringa "null".
    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
    Jan 2006
    Messaggi
    127
    ciao andbin,

    in effetti della cosa del null me ne sono accorto ed ho modificato inserendo una variabile di appoggio.

    sotto windows il programma funziona.

    sotto linux ti garantisco che cmq il funzionamento era strano, solo delle volte la cosa funzionava, al di là dell'ultimo null che non fa uscire dal ciclo, sono sicuro che non funzionava lo stesso in quanto se mettevo delle system.out nel ciclo questo nn stampava niente, semplicemente non entrava mai nel ciclo.

    ho provato anche un codice che hai scritto tu, trovato qui nel forum, ma il comportamento è simile.

    codice:
    public String leggiFile (String nomeFile) throws IOException{
    	    InputStream is = null;
    	    InputStreamReader isr = null;
    	   
    
    	    StringBuffer sb = new StringBuffer ();
    	    char[] buf = new char[1024];
    	    int len;
    	
    	    try
    	    {
    	    	
    	        File fileread=new File(nomeFile);
    	        is = new FileInputStream(fileread);
    	        isr = new InputStreamReader(is);
    	        BufferedReader br=new BufferedReader(isr);
    	        while ((len = br.read (buf)) > 0){
    
    	            sb.append (buf, 0, len);}
    	        System.out.println(sb.toString());
    	        return sb.toString ();
    	    }
    	    finally
    	    {
    	        if (isr != null)
    	            isr.close ();
    	    }
        }

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.