Esistenza di un file in java

di il
3 risposte

Esistenza di un file in java

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

  • Re: Esistenza di un file in java

    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.
  • Re: Esistenza di un file in java

    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?
  • Re: Esistenza di un file in java

    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