Làm cách nào để đọc tệp văn bản trong Android?


116

Tôi muốn đọc văn bản từ một tệp văn bản. Trong đoạn mã dưới đây, một ngoại lệ xảy ra (có nghĩa là nó đi đến catchkhối). Tôi đặt tệp văn bản vào thư mục ứng dụng. Tôi nên đặt tệp văn bản này (mani.txt) ở đâu để đọc chính xác?

    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();
    }

4
bạn hy vọng trình giả lập của bạn là một phần của s / m của bạn là gì? "E: \\ test \\ src \\ com \\ test \\ mani.txt"
Athul Harikumar 14/09/12

2
bạn muốn đọc tệp văn bản từ vị trí nào ...?
Sandip Armal Patil, 14/09/12

2
InputStream iS = resources.getAssets (). Open (fileName); (Nếu bạn đặt các tập tin trong tài sản)
Athul Harikumar

1
@Sandip file văn bản thực sự tôi sao chép (mani.txt) và đặt nó vào thư mục của ứng dụng android (thư mục có .settings, bin, libs, src, tài sản, gen, res, androidmanifeast.xml)
user1635224

2
hoặc chỉ cần đặt trong thư mục res / raw và kiểm tra câu trả lời cập nhật của tôi.
Sandip Armal Patil, 14/09/12

Câu trả lời:


242

Thử cái này :

Tôi cho rằng tệp văn bản của bạn nằm trên thẻ 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());

các liên kết sau cũng có thể giúp bạn:

Làm cách nào để đọc tệp văn bản từ thẻ SD trong Android?

Làm thế nào để đọc tệp văn bản trong Android?

Android đọc tệp tài nguyên thô


3
liên kết của bạn sẽ giúp tôi đạt được
user1635224

10
BufferedReader cần phải đóng ở cuối!
RainClick

2
Nếu bạn có một hàng trống trong tài liệu txt của mình, trình phân tích cú pháp này sẽ ngừng hoạt động! Giải pháp là phải thừa nhận có hàng rỗng này: while ((line = br.readLine()) != null) { if(line.length() > 0) { //do your stuff } }
Choletski

@Shruti làm thế nào để thêm các tập tin vào thẻ SD
Tharindu Dhanushka

@Choletski, tại sao bạn nói nó sẽ ngừng hoạt động? Nếu có một dòng trống, dòng trống sẽ được thêm vào văn bản StringBuilder. Vấn đề là gì?
LarsH

28

Nếu bạn muốn đọc tập tin từ thẻ sd. Sau đó, mã sau có thể hữu ích cho bạn.

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

    }

Nếu bạn muốn đọc tệp từ thư mục nội dung thì

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

Hoặc Nếu bạn muốn đọc tệp này từ res/rawmàn hình gấp, nơi tệp sẽ được lập chỉ mục và có thể truy cập bằng một id trong tệp R:

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

Ví dụ hay về cách đọc tệp văn bản từ thư mục res / raw


2
brnằm ngoài phạm vi trong khối cuối cùng.
AlgoRythm


3

Đầu tiên, bạn lưu trữ tệp văn bản của mình vào thư mục thô.

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

Hãy thử mã này

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

0

Thử cái này

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);
  }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.