读一个简单的文本文件
我想在我的示例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 "" ; } }