Mögliches Duplikat:
Android - So ermitteln Sie den absoluten Pfad für eine bestimmte Datei aus Assets?
Ich versuche, eine Datei an die Klasse File (String path) zu übergeben. Gibt es eine Möglichkeit, den absoluten Pfad der Datei im Assets-Ordner zu finden und an File () zu übergeben? Ich habe es versucht file:///Android_asset/myfoldername/myfilename
als Pfadzeichenfolge, aber es hat nicht funktioniert. Irgendeine Idee?
AFAIK, Sie können aus einer Assets-Datei kein File
erstellen, da diese in der apk gespeichert sind, dh es gibt keinen Pfad zu einem Assets-Ordner.
Sie können jedoch versuchen, dieses File
mithilfe eines Puffers und des AssetManager
(es bietet Zugriff auf die Rohdaten-Dateien einer Anwendung) zu erstellen.
Versuchen Sie etwas zu tun wie:
AssetManager am = getAssets();
InputStream inputStream = am.open("myfoldername/myfilename");
File file = createFileFromInputStream(inputStream);
private File createFileFromInputStream(InputStream inputStream) {
try{
File f = new File(my_file_name);
OutputStream outputStream = new FileOutputStream(f);
byte buffer[] = new byte[1024];
int length = 0;
while((length=inputStream.read(buffer)) > 0) {
outputStream.write(buffer,0,length);
}
outputStream.close();
inputStream.close();
return f;
}catch (IOException e) {
//Logging exception
}
return null;
}
Lassen Sie mich über Ihren Fortschritt wissen.
Vermögenswerte bleiben in der apk erhalten, es sei denn, Sie packen sie aus. Dementsprechend gibt es keinen Pfad, den Sie in eine Datei einfügen können. Der Pfad, den Sie in Ihrer Frage angegeben haben, funktioniert mit/in einem WebView, aber ich denke, das ist ein Sonderfall für WebView.
Sie müssen die Datei entpacken oder direkt verwenden.
Wenn Sie einen Kontext haben, können Sie context.getAssets().open("myfoldername/myfilename");
verwenden, um einen InputStream für die Datei zu öffnen. Mit dem InputStream können Sie ihn direkt verwenden oder irgendwo ausschreiben (danach können Sie ihn mit File verwenden).