所以这是一个非常令人尴尬的问题,但我有一个文本文件,java会读取其中的所有单词并将其添加到数组中,我不知道将文本文件放在哪里,就像文件夹那样comp可以搞定吗?有人可以告诉我我的代码在普通的java应用程序中工作,所以它应该在android上运行。
答案 0 :(得分:1)
你可以使用
<your-context>.getAssets();
返回AssetsManager对象。
AssetsManager assets = context.getAssets();
然后,您可以使用open()方法打开输入流。
InputStream inputStream = assets.open("filename");
InputStream对象是IO包中的标准Java对象。您可以使用您希望的对象装饰器(Reader,BufferedReader等)来装饰此流。
如果您希望将此文件从APK(未充气)移出手机,您可以使用输出流从输入流中复制文件的字节。请注意,您必须在写入目录中拥有权限(如果您的手机已植根并且您已创建了一个shell接口以通过JNI运行本机shell命令,则可以执行此操作)。
<强>更新强>
try {
InputStream inputStream = this.getAssets().open("test.txt");
BufferedReader buffer = new BufferedReader(new Reader(inputStream));
String line;
while((line = buffer.readLine()) != null) {
tots.add(line);
}
}
catch(IOException e) {
e.printStackTrace();
}
没有测试过,但我认为这就是你想要的。
答案 1 :(得分:0)
您可以将文件放入资产文件夹并使用
InputStream stream = getAssets().open(filename);
获取输入流
答案 2 :(得分:0)
我在res文件夹中创建了新的raw文件夹,并将chapter0.txt放在这里。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.induction);
wordss = new Vector<String>();
TextViewEx helloTxt = (TextViewEx) findViewById(R.id.test);
helloTxt.setText(readTxt());
}
private String readTxt() {
InputStream inputStream = getResources().openRawResource(R.raw.chapter0);
// 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();
}