webentwicklung-frage-antwort-db.com.de

Android Pfad zur Asset-TXT-Datei

Ich mache:

FileReader fin = new FileReader("file:///Android_asset/myFile.txt");

in einem Android Projekt und in vielen Variationen. Zur Laufzeit wird eine Datei nicht gefunden. Ausnahme: Die Datei ist im Assets-Ordner vorhanden und korrekt. Daher muss mein Pfad falsch sein.

Was ist der absolute Weg, den ich hier brauche?

25
SK9
AssetFileDescriptor descriptor = getAssets().openFd("myfile.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

Versuchen Sie es mit FileDescriptors. Scheint der narrensicherste Weg zu sein, auf dem ich Asset-Pfade gesammelt habe.

44
kcoppock
    InputStream is = getResources().getAssets().open("terms.txt");
    String textfile = convertStreamToString(is);

public static String convertStreamToString(InputStream is)
            throws IOException {
            Writer writer = new StringWriter();

            char[] buffer = new char[2048];
            try {
                Reader reader = new BufferedReader(new InputStreamReader(is,
                        "UTF-8"));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                is.close();
            }
            String text = writer.toString();
            return text;
    }
19

Es wird nicht gelesen, da alle Assets im Assets-Ordner komprimiert sind. Ändern Sie die Erweiterung in ".mp3" und lesen Sie sie dann ein, damit sie nicht komprimiert wird.

3
panthro

Kannst du sowas benutzen?

    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(context.getAssets().open("fileName.txt")));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
3
Nick Campion

Wenn Sie ein IDE wie Eclipse verwenden, müssen Sie möglicherweise eine Bereinigung durchführen oder die API im bin-Verzeichnis löschen. Es scheint, dass die Assets bei Ihnen nicht aktualisiert werden mach einen Build.

2
AssetManager am = context.getAssets();
InputStream fs = am.open("myFile.txt");
1
user598417