web-dev-qa-db-fra.com

Accéder aux fichiers de ressources dans Android

J'ai un fichier de ressources dans mon dossier/res/raw/(/res/raw/textfile.txt) que j'essaie de lire depuis mon application Android pour le traitement).

public static void main(String[] args) {

    File file = new File("res/raw/textfile.txt");

    FileInputStream fis = null;
    BufferedInputStream bis = null;
    DataInputStream dis = null;

    try {
      fis = new FileInputStream(file);
      bis = new BufferedInputStream(fis);
      dis = new DataInputStream(bis);

      while (dis.available() != 0) {
              // Do something with file
          Log.d("GAME", dis.readLine()); 
      }

      fis.close();
      bis.close();
      dis.close();

    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

J'ai essayé une syntaxe de chemin différente mais j'obtiens toujours une erreur Java.io.FileNotFoundException. Comment puis-je accéder à /res/raw/textfile.txt pour le traitement? File file = new File ("res/raw/textfile.txt"); la mauvaise méthode dans Android?


* Réponse: *

// Call the LoadText method and pass it the resourceId
LoadText(R.raw.textfile);

public void LoadText(int resourceId) {
    // The InputStream opens the resourceId and sends it to the buffer
    InputStream is = this.getResources().openRawResource(resourceId);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String readLine = null;

    try {
        // While the BufferedReader readLine is not null 
        while ((readLine = br.readLine()) != null) {
        Log.d("TEXT", readLine);
    }

    // Close the InputStream and BufferedReader
    is.close();
    br.close();

    } catch (IOException e) {
        e.printStackTrace();
    }
}
32
Selzier

Si vous avez un fichier dans res/raw/textfile.txt De votre appel d'activité/widget:

getResources().openRawResource(...) renvoie un InputStream

Les points doivent en fait être un entier trouvé dans R.raw ... correspondant à votre nom de fichier, éventuellement R.raw.textfile (C'est généralement le nom du fichier sans extension)

new BufferedInputStream(getResources().openRawResource(...)); puis lire le contenu du fichier sous forme de flux

28
Kennet