简体   繁体   English

Android读取与应用程序打包在一起的.txt文件

[英]Android read in a .txt file packaged with app

I want to be able to read in a file, myFile.txt , that I ship with my app, either in the assets folder, the res/raw folder, where ever, it does not matter. 我希望能够在我的应用程序附带的文件myFile.txt中读取资产文件夹,res / raw文件夹中的任何位置,这无关紧要。

BUT! 但! I do not want an InputStream of that file... I want to be able to do something like: 我不想要该文件的InputStream ...我想要执行以下操作:

while ((reader = is.readLine()) != null) { ... }

I've searched around and found stuff that was close but not really what I'm looking for.. 我到处搜寻,发现的东西很接近,但并不是我真正想要的东西。

Thank you for any help. 感谢您的任何帮助。

EDIT - some code I was trying: 编辑-我正在尝试的一些代码:

InputStream in = this.mCtx.getResources().openRawResource(R.raw.myFile);
Reader is = new BufferedReader(new InputStreamReader(in, "UTF8"));

(now what? The Reader class doesn't have a readLine() method) (现在是什么?Reader类没有readLine()方法)

Just change 只是改变

Reader is = new BufferedReader(new InputStreamReader(in, "UTF8"));

to

BufferedReader is = new BufferedReader(new InputStreamReader(in, "UTF8"));

BufferedReader has a readLine() method. BufferedReader具有readLine()方法。 You're unnecessarily upcasting to Reader and losing the additional features. 您不必要地转向了Reader,并失去了其他功能。

use BufferedReader instead of Reader for definition. 使用BufferedReader而不是Reader进行定义。

BufferedReader is = new BufferedReader(new InputStreamReader(in, "UTF8"));

Bufferedreader has readline method but not reader BufferedReader具有readline方法,但没有Reader

You can store the file in sdcard and specify its location in "file_path" in below code: 您可以将文件存储在sdcard中,并在以下代码的“ file_path”中指定其位置:

File selectedFile = new File("file_path");
FileInputStream fstream = new FileInputStream(selectedFile);
BufferedReader reader = new BufferedReader(new InputStreamReader(fstream));

And then 接着

while ((strLine = reader.readLine()) != null)
{
        //Do Stuff Here
}

What about 关于什么

BufferedReader reader = new BufferedReader(new BufferedInputStream(is));

Edit: Sorry - my fault. 编辑:对不起-我的错。 Just stick with the BufferedReader. 只需坚持使用BufferedReader。 Opening a ressource can be done with 可以通过以下方式打开资源

InputStream is = getClass().getResourceAsStream("/org/example/res/my_file.txt");

See Class#getResourceAsStream ) 请参见Class#getResourceAsStream

Use these steps to get it done.... 使用以下步骤将其完成...。

File f = new File("/sdcard/MyFolder/MyFile.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

StringBuilder sb = new StringBuilder();
String str = new String();

while((br.readLine())!=null){


   sb.append(br.readLine());  


 }

str = sb.toString();

I think you should use something like that: 我认为您应该使用类似的方法:

BufferedReader in = new BufferedReader(new     InputStreamReader(activity.getAssets().open("yourfile")));

StringBuilder buffer = new StringBuilder(); StringBuilder buffer = new StringBuilder(); while ((line = in.readLine()) != null) buffer.append(line).append('\\n'); while((line = in.readLine())!= null)buffer.append(line).append('\\ n');

And in your assets dir simply put your file without .txt extension. 只需将没有.txt扩展名的文件放在资产目录中即可。 Hope this help you. 希望这对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM