Ich versuche, in eine Datei zu laden, und ich erhalte eine FileNotFoundException, obwohl die Datei vorhanden ist. Ich habe versucht, den absoluten Pfad (C: /Users/cdeck_000/AndroidStudioProjects/ProjectCaligula_Final/cert/cert.crt) und den relativen Pfad (cert/cert.crt) zu machen, vorausgesetzt Android startet auf der Projektebene. Wenn ich es mit dem relativen Pfad laufen und fragen Sie nach der Datei absoluten Pfad bekomme ich dies:FileNotFoundException auf .crt-Datei
Pfad: /cert/cert.crt
Der folgende Code zusammen mit der Projektstruktur ist.
File file = new File("cert/cert.crt");
boolean i = file.exists(); //false
boolean r = file.canRead(); //false
String path = file.getAbsolutePath(); //cert/cert.crt
String pathForApp = new File(".").getAbsolutePath(); //returns "/."
InputStream caInput = new BufferedInputStream(new FileInputStream(file)); //error
Kann jemand läuten und lassen Sie mich wissen, ob mein Wissen über absolute/relative Pfade mit Android falsch ist oder mir einen Rat geben, wie dieses Problem zu lösen? Ich habe bereits gedacht, dass Berechtigungen das Problem war, aber ich habe die Berechtigungen für Dateien (entspricht Chmod 777) und es hat nichts geändert.
Ihre IDE wird normalerweise Ihre Anwendung aus dem Verzeichnis 'build' oder' build/classes' ausführen. Ihre Zertifikatsdatei sollte deshalb zum Kopieren in das Klassenverzeichnis in das Verzeichnis 'src' gestellt worden sein. – EJP
@EJP danke .. Ich habe die Datei in src verschoben, nun ist der Pfad ../src/cert.crt .. Ich habe die Datei geändert, die jetzt von "cert.crt" geladen wird, aber sie findet sie immer noch nicht. – Chris
Vielleicht liege ich falsch, Ihre Datei befindet sich auf der Festplatte Ihres Computers und wenn Sie die App ausführen, kann Ihre App nicht auf die Festplatte Ihres Computers zugreifen. Und vielleicht wegen 'File file = new File (" cert/cert.crt ");' Sie erhalten die Pfade als String, aber nicht zugänglich, wenn Sie die App auf dem Emulator/Gerät ausführen. Versuchen Sie, die Datei zu lesen, indem Sie sie in den Ordner "res/raw" oder "Assets" einfügen. – knownUnknown