Esistenza di un file in java

di daiazu il
3 risposte
Ho necessità di sapere se un file esiste. Riporto di seguito il codice per la lettura di un file di testo.
Senza il metodo exists() il programma viene compilato senza errori. Se invece aggiungo exists() come indicato tra i commenti //********, il compilatore genera un errore (exists() viene sottolineata in rosso). Molti esempi di esistenza di file trovati in rete utilizzano tale metodo. Perchè qui non funziona?

package filetesto03;
import java.io.*;

public class FileTesto03 {

public static void main(String[] args) {

try {
FileReader f;
f=new FileReader("lettura.txt");
BufferedReader b;
b=new BufferedReader(f);
//***********

if(f.exists())
System.out.println("il file esiste");

//***********

String s;
while(true) {
s=b.readLine();
if(s==null)
break;
System.out.println(s);
}
}
catch (IOException e)
{
System.out.println("Errore nel file"+e.getMessage());

}
}
}

3 Risposte

  • daiazu ha scritto:


    Senza il metodo exists() il programma viene compilato senza errori. Se invece aggiungo exists() come indicato tra i commenti //********, il compilatore genera un errore (exists() viene sottolineata in rosso).
    exists() è di java.io.File. Prima crei un oggetto File (che rappresenta solo il pathname), poi verifichi se esiste e in base al risultato fai quello che devi fare.
  • Scusami se insisto ma sono alle prime armi con i file
    L'oggetto non viene creato con FileReader f;?
    import java.io.* non importa anche la classe FILE?
  • daiazu ha scritto:


    import java.io.* non importa anche la classe FILE?
    Sì ma l'import serve solo per poter usare nel sorgente il nome "semplice" di un tipo, ovvero non completamente qualificato.

    Senza import dovresti fare:

    java.io.File f = new java.io.File("blabla/qualcosa.txt");

    e così per tutti i tipi che non importi. Oppure con l'import

    import java.io.*;
    oppure (specifico per File)
    import java.io.File;

    allora puoi fare:

    File f = new File("blabla/qualcosa.txt");

    Ma il succo resta quello che ho detto prima: exists() è solo di File, non di un'altra classe di I/O come FileReader/FileInputStream. Quindi se vuoi verificare se un file esiste/non esiste prima di "aprirlo" con una delle classi di I/O allora devi fare:
    File f = new File("blabla/qualcosa.txt");
    
    if (f.exists()) {         // o !f.exists()
        .....
    }
Devi accedere o registrarti per scrivere nel forum
3 risposte