繁体   English   中英

使用FileReader从Android Assets读取文件

[英]Read file from Android Assets with 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);

表示“无法解析符号“上下文””

文件的路径在这里

您不需要FileReader 使用包裹在InputStreamReaderBufferedReader包裹在已经从getAssets().open()获得的InputStreamReader周围的InputStream

FileReader需要文件系统路径。

没有输入流的构造函数。

因此,您不能使用FileReader从资产中“读取”文件。

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

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

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

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

InputStream is = getAssets().open("images/names.txt");
BufferedReader br = new BufferedReader(is);

暂无
暂无

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

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