115 votes

Lecture d'un simple fichier texte

J'essaie de lire un simple fichier texte dans mon application Android. J'utilise le code ci-dessous pour lire le fichier texte simple.

1. InputStream inputStream = openFileInput("test.txt");
2. InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
3. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

Mes questions sont les suivantes : Où dois-je placer ce "test.txt" dans mon projet. J'ai essayé de placer le fichier sous "res/raw" et "asset" mais je reçois le message exception "FileNotFound" lorsque la première phase du code écrit ci-dessus est exécutée.

Merci pour votre aide

181voto

shihpeng Points 1893

Placez votre fichier texte dans le dossier /assets sous le projet Android. Utilisez AssetManager pour y accéder.

AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");

Ou vous pouvez également placer le fichier dans le dossier /res/raw où le fichier sera indexé et est accessible par un id dans le fichier R :

InputStream is = getResources().openRawResource(R.raw.test);

25voto

Essayez ceci,

package example.txtRead;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class txtRead extends Activity {
    String labels="caption";
    String text="";
    String[] s;
    private Vector<String> wordss;
    int j=0;
    private StringTokenizer tokenizer;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        wordss = new Vector<String>();
        TextView helloTxt = (TextView)findViewById(R.id.hellotxt);
        helloTxt.setText(readTxt());
 }

    private String readTxt(){

     InputStream inputStream = getResources().openRawResource(R.raw.toc);
//     InputStream inputStream = getResources().openRawResource(R.raw.internals);
     System.out.println(inputStream);
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

     int i;
  try {
   i = inputStream.read();
   while (i != -1)
      {
       byteArrayOutputStream.write(i);
       i = inputStream.read();
      }
      inputStream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

     return byteArrayOutputStream.toString();
    }
}

7voto

Wroclai Points 15042

Avoir un fichier dans votre assets nécessite l'utilisation de ce morceau de code afin de récupérer les fichiers du dossier assets dossier :

yourContext.getAssets().open("test.txt");

Dans cet exemple, getAssets() renvoie un AssetManager et ensuite vous êtes libre d'utiliser n'importe quelle méthode de l'instance de la AssetManager API.

5voto

In Mono For Android....

   try
            {
                System.IO.Stream StrIn = this.Assets.Open("MyMessage.txt");

                string Content = string.Empty;
                using (System.IO.StreamReader StrRead = new System.IO.StreamReader(StrIn))
                {
                    try
                    {
                        Content= StrRead.ReadToEnd();
                        StrRead.Close();
                    }
                    catch (Exception ex) { csFunciones.MostarMsg(this, ex.Message); }
                }
                StrIn.Close();
                StrIn = null;
            }
            catch (Exception ex) { csFunciones.MostarMsg(this, ex.Message); }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X