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

Posted

技术标签:

【中文标题】如何在 Android 中读取文本文件?【英文标题】:How can I read a text file in Android? 【发布时间】:2012-09-07 11:00:59 【问题描述】:

我想从文本文件中读取文本。在下面的代码中,发生了一个异常(这意味着它转到了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();
    

【问题讨论】:

你希望你的模拟器成为你的 s/m 的一部分吗? "E:\\test\\src\\com\\test\\mani.txt" 你想从哪个位置读取文本文件...? InputStream iS = resources.getAssets().open(fileName); (如果你把文件放在资产中) @Sandip 实际上我复制了文本文件 (mani.txt) 并将其放入 android 应用程序的文件夹中(文件夹有 .settings , bin,libs,src,assets,gen,res,androidmanifeast.xml ) 或简单地放入 res/raw 文件夹并检查我更新的答案。 【参考方案1】:

小文本文件的最短格式(在 Kotlin 中):

val reader = FileReader(path)
val txt = reader.readText()
reader.close()

【讨论】:

【参考方案2】:

试试这个:

我假设你的文本文件在 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());

以下链接也可以帮助您:

How can I read a text file from the SD card in Android?

How to read text file in Android?

Android read text raw resource file

【讨论】:

你的链接会帮助我实现 BufferedReader 最后需要关闭! 如果您的 txt 文档中有一个空行,此解析器将停止工作!解决方案是承认有这个空行:while ((line = br.readLine()) != null) if(line.length() > 0) //do your stuff @Shruti 如何将文件添加到 SD 卡中 @Choletski,你为什么说它会停止工作?如果有空行,则该空行将附加到文本 StringBuilder。有什么问题?【参考方案3】:

试试这个代码

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;

【讨论】:

【参考方案4】:

首先将文本文件存储到原始文件夹中。

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.");

【讨论】:

【参考方案5】:

如果你想从 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.
  

    

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

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

或者,如果您想从res/raw 文件夹中读取此文件,该文件将被索引并可以通过 R 文件中的 id 访问:

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

Good example of reading text file from res/raw folder

【讨论】:

br 在 finally 块中超出范围。【参考方案6】:

试试这个

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

【讨论】:

【参考方案7】:

将您的文本文件放入 Asset 文件夹...并从该文件夹中读取文件...

请参阅下面的参考链接...

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

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

Reading a simple text file

希望对您有所帮助...

【讨论】:

以上是关于如何在 Android 中读取文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android Studio中将Pdf文件转换为文本

在 Android java 中读取文本文件或 XML 文件

如何在android中读取.doc、.docx、.xls文件[重复]

在特定文件夹android中创建文本文件

Android Studio 如何获取 text文本内容

如何读取文本文件中的文本块