web-dev-qa-db-fra.com

Android chemin d'accès au fichier d'actif txt

Je fais:

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

dans un Android et de nombreuses variantes. Au moment de l'exécution, j'obtiens une exception de fichier introuvable. Le fichier est présent et correct dans le dossier des ressources, donc mon chemin doit être incorrect.

Quel est le chemin absolu dont j'ai besoin ici?

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

Essayez d'utiliser ce qui précède avec FileDescriptors. Semble être le moyen le plus infaillible que j'ai trouvé pour rassembler les chemins d'accès aux actifs.

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
jayesh kavathiya

Il ne le lit pas car tous les actifs du dossier des actifs sont compressés, essayez de changer son extension en .mp3 puis de le lire, ce qui devrait empêcher sa compression.

3
panthro

Pouvez-vous utiliser quelque chose comme

    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

J'ai trouvé que si vous utilisez un IDE comme Eclipse, vous devrez peut-être faire un nettoyage - ou supprimer l'API dans le répertoire bin. Il semble que les actifs ne soient pas mis à jour lorsque vous faire un build.

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