使用FileReader从Android Assets读取文件

时间:2018-06-04 18:33:20

标签: java android file assets filereader

我正在尝试从资源中读取文件,但它既没有读取文件也没有抛出异常。我正在研究一个OCR系统,它读取单词或句子,并通过比较单词或字母组与由“names.txt”文件制作的ArrayList来从中提取名称。名称大约是15000,每个名称都以单独/单行存储。实际上,我正在将这些名称添加到ArrayList中,以查明该文件中是否存在特定名称。一切都已完成并经过测试,唯一剩下的就是阅读文件。我已尝试使用java IDE从驱动器读取文件的相同代码,它正在使用Java ide但不在Android Studio中。 试过一段代码:

FileReader freader = new FileReader("file:///android_asset/names.txt");
BufferedReader br = new BufferedReader(freader);

我也试过了,

FileReader freader = new FileReader(getAssets().open("names.txt"));
BufferedReader br = new BufferedReader(freader);

给出错误

Error:(1387, 26) error: no suitable constructor found for FileReader(InputStream)
constructor FileReader.FileReader(File) is not applicable (argument mismatch; InputStream cannot be converted to File)
constructor FileReader.FileReader(FileDescriptor) is not applicable (argument mismatch; InputStream cannot be converted to FileDescriptor)
constructor FileReader.FileReader(String) is not applicable (argument mismatch; InputStream cannot be converted to String)"

还有这个:

FileReader freader = new FileReader(context.getAssets().open("names.txt"));
BufferedReader br = new BufferedReader(freader);

说“无法解析符号'上下文'”

文件的路径为here

2 个答案:

答案 0 :(得分:0)

您不需要FileReader。使用BufferedReader缠绕InputStreamReader缠绕InputStream来自getAssets().open()的{​​{1}}。

答案 1 :(得分:-1)

FileReader需要文件系统路径。

输入流没有构造函数。

所以,你不能使用FileReader从资产中“读取”文件。

将文件从资产复制到文件系统。

之后在文件系统上使用该文件。

如果您不坚持使用FileReader,则可以更改

var reg1 = RegExp('.{3}', 'g');

var str1 = '2';
var str2 = '33';
var str3 = 'ads';
var str4 = '2ddwfff';

console.log(reg1.test(str4));

FileReader freader = new FileReader(getAssets().open("names.txt"));
BufferedReader br = new BufferedReader(freader);