PDA

View Full Version : [JAVA] Lettura file vuoto con BufferedReader


swanelvis
18-06-2008, 16:07
Ciao a tutti,
ho necessità di gestire la lettura di un file di testo vuoto.
Non riesco a capire cosa restituisce readLine() applicata su un file vuoto.
Nel seguito riporto il classico codice per gestire la lettura da file
________________________________________________________

File file=new File(path_file);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
//Prende la prima riga del file
String linea=br.readLine();
if(linea != null){
System.out.println("File non vuoto");
}else{
System.out.println("File vuoto");
}

smart83
18-06-2008, 16:21
scusa,perchè nn mandi su video proprio la readLine?cioè, perchè prima dell'if nn metti l'istruzione System.out.println(br.readLine())?così saprai cosa manda in uscita.sempre se è qst il tuo problema :p

swanelvis
18-06-2008, 16:29
scusa,perchè nn mandi su video proprio la readLine?cioè, perchè prima dell'if nn metti l'istruzione System.out.println(br.readLine())?così saprai cosa manda in uscita.sempre se è qst il tuo problema :p

bene ...avevo già provato con le seguenti istruzioni
_____________________________________
String linea=br.readLine();
System.out.println(linea);
if( linea!= null){
System.out.println(File non vuoto);
}else{
System.out.println("File vuoto");
}
_____________________________________
OUTPUT:
null
null


cioè praticamente la condizione dell'if non mi intercetta il null prodotto da readLine(). Come risolvere??

smart83
18-06-2008, 16:56
ma nell'if nn entra proprio????mi sembra strano.

swanelvis
18-06-2008, 17:13
no...non entra proprio....

smart83
19-06-2008, 08:23
c'ho provato con together e mi funziona perfettamente.nn so cosa possa essere da te.il codice che ho inserito è qst,con l'aggiunta dei "try/catch"per gestire le varie eccezioni:

String path_file="esempio.txt";
File file=new File(path_file);
FileInputStream fis;
try {
fis = new FileInputStream(file);

InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
// Prende la prima riga del file
String linea=br.readLine();

if(linea != null){
System.out.println("File non vuoto");
}else{
System.out.println("File vuoto");
}
} catch (FileNotFoundException e) {}
catch (IOException e) {}

dove "esempio.txt" è semplicemente un file di testo vuoto inserito nel workspace.
mi dispiace...nn so che dirti a qst punto

banryu79
19-06-2008, 08:59
Ho fatto anche io una prova con il tuo codice:

public class Main {

static final private String path_file = "C:/text.txt";

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException
{
File file = new File(path_file);
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));

String linea = br.readLine();
if (linea != null)
{
System.out.println("File non vuoto");
System.out.println(linea);
System.out.println("---");
}
else
{
System.out.println("File vuoto");
System.out.println("---");
}
}

}


Funziona benissimo.
Sei sicuro che il tuo file di testo sia completamente *vuoto*?
Non è che magari era presente una escape sequence non visibile (tipo una \n "newline")?
Verifica aprendo il file txt con un editor che ti permetta di visualizzare i "caratteri nascosti" (per esempio TextPad).

swanelvis
20-06-2008, 15:52
ok...grazie mille per i consigli !
Ho risolto....