读一个简单的文本文件

我想在我的示例Android应用程序中读取一个简单的文本文件。 我正在使用下面的书面代码来阅读简单的文本文件。

InputStream inputStream = openFileInput("test.txt"); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

我的问题是:我应该把这个"test.txt"文件放在我的项目中? 我已经尝试将文件放在"res/raw""asset"文件夹下,但是当上面编写的代码的第一次执行得到执行时,我得到了exception "FileNotFound"

谢谢您的帮助

把你的文本文件放在Android项目下的/assets目录下。 使用AssetManager类来访问它。

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

或者,您也可以将文件放在/res/raw目录中,文件将被编入索引,并可通过R文件中的ID进行访问:

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

尝试这个,

 package example.txtRead; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.Vector; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class txtRead extends Activity { String labels="caption"; String text=""; String[] s; private Vector<String> wordss; int j=0; private StringTokenizer tokenizer; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); wordss = new Vector<String>(); TextView helloTxt = (TextView)findViewById(R.id.hellotxt); helloTxt.setText(readTxt()); } private String readTxt(){ InputStream inputStream = getResources().openRawResource(R.raw.toc); // InputStream inputStream = getResources().openRawResource(R.raw.internals); System.out.println(inputStream); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int i; try { i = inputStream.read(); while (i != -1) { byteArrayOutputStream.write(i); i = inputStream.read(); } inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return byteArrayOutputStream.toString(); } } 

这是我如何做到的:

 public static String readFromAssets(Context context, String filename) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open(filename))); // do reading, usually loop until end of file reading StringBuilder sb = new StringBuilder(); String mLine = reader.readLine(); while (mLine != null) { sb.append(mLine); // process line mLine = reader.readLine(); } reader.close(); return sb.toString(); } 

使用它如下:

 readFromAssets(context,"test.txt") 

在您的assets文件夹中有一个文件需要您使用这段代码才能从assets文件夹中获取文件:

 yourContext.getAssets().open("test.txt"); 

在这个例子中, getAssets()返回一个AssetManager实例,然后可以从AssetManager API中随意使用任何你想要的方法。

在单声道的Android …

 try { System.IO.Stream StrIn = this.Assets.Open("MyMessage.txt"); string Content = string.Empty; using (System.IO.StreamReader StrRead = new System.IO.StreamReader(StrIn)) { try { Content = StrRead.ReadToEnd(); StrRead.Close(); } catch (Exception ex) { csFunciones.MostarMsg(this, ex.Message); } } StrIn.Close(); StrIn = null; } catch (Exception ex) { csFunciones.MostarMsg(this, ex.Message); } 

读取保存在资产文件夹中的文件

 public static String readFromFile(Context context, String file) { try { InputStream is = context.getAssets().open(file); int size = is.available(); byte buffer[] = new byte[size]; is.read(buffer); is.close(); return new String(buffer); } catch (Exception e) { e.printStackTrace(); return "" ; } }