我正在尝试从资源中读取文件,但它既没有读取文件也没有抛出异常。我正在研究一个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。
答案 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);