2012-03-27 21 views
-1

Wie überprüft man, ob die Datei existiert und öffnet?Java Wie überprüft man, ob die Datei existiert und öffnet?

if(file is found) 
{ 
    FileInputStream file = new FileInputStream("file"); 
} 
+0

möglich duplicate of [Wie überprüfe ich, ob eine Datei existiert? (Java unter Windows)] (http://stackoverflow.com/questions/1816673/how-do-i-check-if-a-file-exists-java-on-windows) – anubhava

Antwort

12

File.isFile wird Ihnen sagen, dass eine Datei existiert und kein Verzeichnis ist.

Beachten Sie, dass die Datei zwischen Ihrer Überprüfung und dem Versuch, sie zu öffnen, gelöscht werden kann, und diese Methode überprüft nicht, ob der aktuelle Benutzer Leseberechtigungen hat.

File f = new File("file"); 
if (f.isFile() && f.canRead()) { 
    try { 
    // Open the stream. 
    FileInputStream in = new FileInputStream(f); 
    // To read chars from it, use new InputStreamReader 
    // and specify the encoding. 
    try { 
     // Do something with in. 
    } finally { 
     in.close(); 
    } 
    } catch (IOException ex) { 
    // Appropriate error handling here. 
    } 
} 
+0

Die Art, wie Sie den Stream schließen, ist falsch. Das in.close() sollte im finally des ersten Versuchs sein. Ich gebe dir einen Minuspunkt, um daran zu erinnern. –

+0

@Charles Wu, Durch das Schließen von 'in' wird nichts verloren, bevor irgendeine Ausnahme behandelt wird. Außerdem kann die 'in'-Variable nicht außerhalb eines 'IOException'-Handlers initialisiert werden, da der' FileInputStream'-Konstruktor den 'IOException'-Handler auslöst, also wenn ich das' finally' nach außen verlagere, müsste ich alberne Tricks wie 'in' initialisieren zu nullen und zu überprüfen, dass im 'finally', was die Dinge nur verkompliziert, und selbst wenn ich diese unnötige Komplexität hinnehmen wollte, würde ich sowieso eine" Probe "um die ganze Sache brauchen, weil' in.close() 'kann Wirf eine 'IOException'. –

+0

Ich entschuldige mich dafür, dass Sie Ihren Code falsch verstanden haben. Ihre Verwendung der Instanz von FileInputStream in der inneren try-Anweisung kann 'in' schließen. Aber die propagierende Ausnahme von 'in.close()' überschreibt möglicherweise die Ausnahme, wenn eine andere Methode von 'in' ebenfalls eine Ausnahme auslöst. –

0

Sie können die exists Methode in der documentation finden: zuerst ein File-Objekt zu erstellen, verwenden Sie seine exists() Methode zu überprüfen

File file = new File(yourPath); 
if(file.exists()) 
    FileInputStream file = new FileInputStream(file); 
+0

Verdammt jemand ist sauer auf mich .. – talnicolas

5

Sie benötigen. Dieses Dateiobjekt kann dann an den FileInputStream-Konstruktor übergeben werden.

File file = new File("file");  
if (file.exists()) { 
    FileInputStream fileInputStream = new FileInputStream(file); 
} 
+0

Danke, gute Antwort. – user93200

Verwandte Themen