android - Datei.exists() gibt false zurück, für vorhandene Datei (für etwas anderes als pdf)
Beide Dateien vorhanden sind, die auf der sdcard, aber aus welchem Grund auch immer exists() gibt false zurück, die die png-Datei.
//String path = "/mnt/sdcard/Android/data/com.gemoro.toffer/cache/1551619351/0/foto/-921042926.png";
String path = "/mnt/sdcard/Android/data/com.gemoro.toffer/cache/1551619351/0/foto/-1200240592.pdf";
File file2 = new File(path);
if (null != file2)
{
if(file2.exists())
{
LOG.x("file exist");
}
else
{
LOG.x("file does not exist");
}
}
Nun habe ich Blick auf, was unter der Haube, was die Methode file.exists() nicht wirklich und das ist, was es tut:
public boolean exists()
{
return doAccess(F_OK);
}
private boolean doAccess(int mode)
{
try
{
return Libcore.os.access(path, mode);
}
catch (ErrnoException errnoException)
{
return false;
}
}
Kann es sein, dass die Methode beendet durch das auslösen der Ausnahme und false zurückgeben?
Wenn dem so ist,
- wie kann ich diese Arbeit machen
- welche anderen Optionen zu überprüfen, ob eine Datei vorhanden ist, auf der sdcard sind verfügbar für die Verwendung?
Dank.
- Vielleicht haben Sie (Java) haben nicht die Berechtigungen für den Zugriff auf Dateien?
- Ich denke, dass ich tun: <uses-permission android:name="android.die Genehmigung.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.die Genehmigung.READ_EXTERNAL_STORAGE" />
Du musst angemeldet sein, um einen Kommentar abzugeben.
1 Sie benötigen die Erlaubnis Gerät
Hinzufügen AndroidManifest.xml
2 Bekommen die externen Speicher Verzeichnis
3 Am letzten, überprüfen Sie die Datei
Hinweis: filename ist der Pfad auf der SD-Karte, nicht im root.
Beispiel: Sie wollen finden
dann mit dem Namen ist
.
Versuchen Sie bitte diesen code. Hoffe, es sollte für Sie hilfreich. Ich bin mit diesem code nur. Seine arbeiten gut für mich zu finden ist die Datei vorhanden ist oder nicht. Bitte versuchen Sie es und lassen Sie mich wissen.
Überprüfen Sie das USB-Speichergerät ist nicht mit dem PC verbunden. Seit Android-Gerät mit dem PC verbunden ist als die Speicherung der Dateien sind nicht für die Anwendung verfügbar und Sie erhalten FALSCHE Datei.Exists().
Überprüfen Sie die Datei existiert auf dem internen Speicher
Beispiel : /storage/emulated/0/ORDNERNAME/DATEINAME.ERWEITERUNG
check-Berechtigung (write-Speicher)
und überprüfen Sie die Datei existiert oder nicht
public static boolean isFilePresent(String fileName) {
return getFilePath(fileName).isFile();
}
Holen Sie sich die Datei aus dem Datei-Namen
public static File getFilePath(String fileName){
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File folder = new File(extStorageDirectory, "FOLDER_NAME");
File filePath = new File(folder + "/" + fileName);
return filePath;
}