Bagaimana cara membaca file teks di Android?

117

Saya ingin membaca teks dari file teks. Pada kode di bawah ini, terjadi pengecualian (artinya masuk ke catchblok). Saya meletakkan file teks di folder aplikasi. Di mana saya harus meletakkan file teks ini (mani.txt) untuk membacanya dengan benar?

    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();
    }
pengguna1635224
sumber
4
apa yang Anda harap emulator Anda menjadi bagian dari s / m Anda? "E: \\ test \\ src \\ com \\ test \\ mani.txt"
Athul Harikumar
2
dari lokasi mana Anda ingin membaca file teks ...?
Sandip Armal Patil
2
InputStream iS = resources.getAssets (). Open (fileName); (jika Anda meletakkan file di aset)
Athul Harikumar
1
@Sandip sebenarnya saya menyalin file teks (mani.txt) dan memasukkannya ke dalam folder aplikasi android (folder yang memiliki .settings, bin, libs, src, assets, gen, res, androidmanifeast.xml)
user1635224
2
atau taruh di folder res / raw dan periksa jawaban saya yang diperbarui.
Sandip Armal Patil

Jawaban:

244

Coba ini :

Saya berasumsi file teks Anda ada di kartu 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());

tautan berikut juga dapat membantu Anda:

Bagaimana saya bisa membaca file teks dari kartu SD di Android?

Bagaimana cara membaca file teks di Android?

Android membaca teks file sumber daya mentah

Shruti
sumber
3
tautan Anda akan membantu saya mencapainya
pengguna1635224
10
BufferedReader harus ditutup di bagian akhir!
RainClick
2
Jika Anda memiliki satu baris kosong di dokumen txt Anda, parser ini akan berhenti bekerja! Solusinya adalah mengakui memiliki baris kosong ini: while ((line = br.readLine()) != null) { if(line.length() > 0) { //do your stuff } }
Choletski
@Shruti cara menambahkan file ke kartu SD
Tharindu Dhanushka
@Choletski, mengapa Anda mengatakan itu akan berhenti bekerja? Jika ada baris kosong, baris kosong tersebut akan ditambahkan ke teks StringBuilder. Apa masalahnya?
LarsH
29

Jika Anda ingin membaca file dari kartu sd. Maka kode berikut mungkin bisa membantu Anda.

 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.
  }

    }

Jika Anda ingin membaca file dari folder aset lalu

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

Atau Jika Anda ingin membaca file ini dari res/rawfoldery, di mana file tersebut akan diindeks dan dapat diakses oleh id di file R:

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

Contoh bagus membaca file teks dari folder res / raw

Sandip Armal Patil
sumber
2
brberada di luar ruang lingkup di blok terakhir.
AlgoRythm
3

Pertama, Anda menyimpan file teks Anda ke folder mentah.

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.");
}
Ram
sumber
3

Coba kode ini

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;
}
HuynhHan
sumber
1

Coba ini

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);
  }
Muhammad Usman Ghani
sumber