如何在 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 java 中读取文本文件或 XML 文件