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?
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.
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;
}
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.
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();
}
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.
AssetManager am = context.getAssets();
InputStream fs = am.open("myFile.txt");