如何在Android中阅读文本文件?

use*_*224 107 java android exception-handling inputstream

我想从文本文件中读取文本.在下面的代码中,发生异常(这意味着它进入catch块).我把文本文件放在应用程序文件夹中.我应该把这个文本文件(mani.txt)放在哪里才能正确读取它?

    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();
    }
Run Code Online (Sandbox Code Playgroud)

Shr*_*uti 224

试试这个 :

我假设您的文本文件在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());
Run Code Online (Sandbox Code Playgroud)

以下链接也可以帮助您:

如何从Android中的SD卡读取文本文件?

如何在Android中阅读文本文件?

Android读取文本原始资源文件

  • BufferedReader最后需要关闭! (10认同)
  • close()应该在`finally`块上完成. (9认同)
  • 你的链接将有助于我实现 (3认同)
  • 如果你的txt文档中有一个空行,这个解析器将停止工作!解决方案是承认这个空行:`while((line = br.readLine())!= null){if(line.length()> 0){// do your stuff}}` (2认同)

San*_*til 27

如果你想从SD卡读取文件.然后下面的代码可能对您有所帮助.

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

    }
Run Code Online (Sandbox Code Playgroud)

如果你想从资产文件夹中读取文件,那么

AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");
Run Code Online (Sandbox Code Playgroud)

或者如果您想从res/rawfoldery中读取此文件,那么该文件将被编入索引,并且可以通过R文件中的ID访问:

InputStream is = getResources().openRawResource(R.raw.test);     
Run Code Online (Sandbox Code Playgroud)

从res/raw文件夹中读取文本文件的好例子

  • br超出了finally块的范围。 (2认同)

Huy*_*Han 8

试试这个代码

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;
}
Run Code Online (Sandbox Code Playgroud)


Pri*_*tel 6

将您的文本文件放在资源文件夹...并从该文件夹中读取文件...

见下面的参考链接......

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

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

阅读一个简单的文本文件

希望它会有所帮助......


Muh*_*ani 1

尝试这个

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);
  }
Run Code Online (Sandbox Code Playgroud)