web-dev-qa-db-fra.com

Comment puis-je lire un fichier texte sous Android?

Je veux lire le texte d'un fichier texte. Dans le code ci-dessous, une exception se produit (cela signifie que cela va au bloc catch). Je mets le fichier texte dans le dossier de l'application. Où devrais-je placer ce fichier texte (mani.txt) afin de le lire correctement?

    try
    {
        InputStream instream = openFileInput("E:\\test\\src\\com\\test\\mani.txt"); 
        if (instream != null)
        {
            InputStreamReader inputreader = new InputStreamReader(instream); 
            BufferedReader buffreader = new BufferedReader(inputreader); 
            String line,line1 = "";
            try
            {
                while ((line = buffreader.readLine()) != null)
                    line1+=line;
            }catch (Exception e) 
            {
                e.printStackTrace();
            }
         }
    }
    catch (Exception e) 
    {
        String error="";
        error=e.getMessage();
    }
103
user1635224

Essaye ça :

Je suppose que votre fichier texte est sur la carte SD

    //Find the directory for the SD Card using the API
//*Don't* hardcode "/sdcard"
File sdcard = Environment.getExternalStorageDirectory();

//Get the text file
File file = new File(sdcard,"file.txt");

//Read text from file
StringBuilder text = new StringBuilder();

try {
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line;

    while ((line = br.readLine()) != null) {
        text.append(line);
        text.append('\n');
    }
    br.close();
}
catch (IOException e) {
    //You'll need to add proper error handling here
}

//Find the view by its id
TextView tv = (TextView)findViewById(R.id.text_view);

//Set the text
tv.setText(text.toString());

les liens suivants peuvent également vous aider:

Comment puis-je lire un fichier texte de la carte SD sous Android?

Comment lire un fichier texte sous Android?

fichier de ressources brutes en lecture de texte Android

218
Shruti

Si vous voulez lire le fichier de la carte SD. Ensuite, le code suivant peut vous être utile.

 StringBuilder text = new StringBuilder();
    try {
    File sdcard = Environment.getExternalStorageDirectory();
    File file = new File(sdcard,"testFile.txt");

        BufferedReader br = new BufferedReader(new FileReader(file));  
        String line;   
        while ((line = br.readLine()) != null) {
                    text.append(line);
                    Log.i("Test", "text : "+text+" : end");
                    text.append('\n');
                    } }
    catch (IOException e) {
        e.printStackTrace();                    

    }
    finally{
            br.close();
    }       
    TextView tv = (TextView)findViewById(R.id.amount);  

    tv.setText(text.toString()); ////Set the text to text view.
  }

    }

Si vous voulez lire le fichier du dossier de ressources, alors

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

Ou si vous voulez lire ce fichier à partir du dossier res/raw, où le fichier sera indexé et accessible par un identifiant dans le fichier R:

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

bon exemple de lecture de fichier texte depuis le dossier res/raw

27
Sandip Armal Patil

Mettez votre fichier texte dans Actif Dossier ... & lisez le fichier sous forme de ce dossier ...

voir ci-dessous les liens de référence ...

http://www.technotalkative.com/Android-read-file-from-assets/

http://sree.cc/google/reading-text-file-from-assets-folder-in-Android

Lecture d'un fichier texte simple

j'espère que ça va aider ...

6
Priyank Patel

D'abord, vous stockez votre fichier texte dans un dossier brut.

private void loadWords() throws IOException {
    Log.d(TAG, "Loading words...");
    final Resources resources = mHelperContext.getResources();
    InputStream inputStream = resources.openRawResource(R.raw.definitions);
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

    try {
        String line;
        while ((line = reader.readLine()) != null) {
            String[] strings = TextUtils.split(line, "-");
            if (strings.length < 2)
                continue;
            long id = addWord(strings[0].trim(), strings[1].trim());
            if (id < 0) {
                Log.e(TAG, "unable to add Word: " + strings[0].trim());
            }
        }
    } finally {
        reader.close();
    }
    Log.d(TAG, "DONE loading words.");
}
2
Ram

Essayez ce code

public static String pathRoot = "/sdcard/system/temp/";
public static String readFromFile(Context contect, String nameFile) {
    String aBuffer = "";
    try {
        File myFile = new File(pathRoot + nameFile);
        FileInputStream fIn = new FileInputStream(myFile);
        BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
        String aDataRow = "";
        while ((aDataRow = myReader.readLine()) != null) {
            aBuffer += aDataRow;
        }
        myReader.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return aBuffer;
}
1
HuynhHan

Essaye ça

try {
        reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
      String line="";
      String s ="";
   try 
   {
       line = reader.readLine();
   } 
   catch (IOException e) 
   {
       e.printStackTrace();
   }
      while (line != null) 
      {
       s = s + line;
       s =s+"\n";
       try 
       {
           line = reader.readLine();
       } 
       catch (IOException e) 
       {
           e.printStackTrace();
       }
    }
    tv.setText(""+s);
  }
0
Muhammad Usman Ghani