Sowohl File.isFile () als auch File.isDirectory () geben false zurück

8

Ich habe eine Datei mit dem Namen "aaaäaa.xls"

Dafür gibt File.isFile() und File.isDirectory() false zurück? Warum gibt es false in Linux zurück?

    
user760658 13.02.2013, 12:17
quelle

4 Antworten

5

Bitte versuchen Sie das folgende Codebeispiel

%Vor%

Die Datei ist keine Datei

  

wenn es kein Verzeichnis ist und zusätzlich andere systemabhängige Kriterien erfüllt

Wenn die Ausnahme ausgelöst wird, müssen Sie den Dateipfad überprüfen.

    
Markus Lausberg 13.02.2013 12:25
quelle
4

Gemäß der Dokumentation :

  

public boolean isFile ()

     

Gibt zurück:       true genau dann, wenn die Datei mit diesem abstrakten Pfadnamen existiert und ist       eine normale Datei; sonst falsch.

Auf dieser Basis existiert Ihre Datei entweder nicht oder ist keine normale Datei.

Mögliche Gründe des 1.:

  1. Datei existiert nicht;
  2. -Datei kann nicht zugegriffen werden;
  3. Dateiname ist falsch eingegeben;
  4. Die in Ihrem Programm verwendete Zeichencodierung ist nicht die Das gleiche wie beim Erstellen der Datei.

Mögliche Gründe der 2.:

Oder es ist ein Fehler in JVM. Es ist auch möglich, aber unwahrscheinlich. Zum Beispiel hatte ich sofort Probleme mit einem Ausrufezeichen in Pfadnamen - Bug 4523159 .

Wenn Sie auf die Datei zugreifen möchten, rufen Sie dir.listFiles() und arbeiten mit seinem Rückgabewert.

(Die Antwort basiert teilweise auf Dieser Thread )

    
naXa 19.01.2014 23:25
quelle
2

Überprüfen Sie die Berechtigungen der übergeordneten Verzeichnisse dieser Datei. Einige dieser Verzeichnisse verfügen möglicherweise nicht über die Berechtigung Ausführen für den aktuellen Benutzer.

  • Das ausführbare Bit des Verzeichnisses ermöglicht dem betroffenen Benutzer, es einzugeben und auf Dateien und Verzeichnisse innerhalb von
  • zuzugreifen
stan 14.02.2013 09:46
quelle
0

Ich hatte auch Probleme mit file.isFile() , die false für Dateien zurückgeben, vermutlich weil die Datei nicht "regulär" ist, wie in anderen Antworten auf diese Frage erwähnt. Als Workaround verwende ich file.listFiles() != null , was die benötigte Funktionalität zu bieten scheint. Laut der Java-Datei-API :

  

Wenn dieser abstrakte Pfadname kein Verzeichnis angibt, gibt diese Methode null zurück. Andernfalls wird ein Array von File-Objekten zurückgegeben.

    
Lee Stemkoski 27.11.2016 16:19
quelle

Tags und Links