Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用FileReader从Android资产读取文件_Java_Android_File_Assets_Filereader - Fatal编程技术网

Java 使用FileReader从Android资产读取文件

Java 使用FileReader从Android资产读取文件,java,android,file,assets,filereader,Java,Android,File,Assets,Filereader,我试图从资产中读取文件,但它既不读取文件,也不引发异常。我正在开发一个OCR系统,它读取单词或句子,并通过将单词或字母组与“names.txt”文件中的ArrayList进行比较,从中提取名称。名称约为15000个,每个名称以单独/单行的形式存储。实际上,我正在将这些名称添加到ArrayList中,以确定该文件中是否存在特定的名称。一切都已完成并经过测试,只剩下读取文件了。我在JavaIDE上尝试过同样的代码,从驱动器读取文件,它在JavaIDE上工作,但在AndroidStudio中不工作。

我试图从资产中读取文件,但它既不读取文件,也不引发异常。我正在开发一个OCR系统,它读取单词或句子,并通过将单词或字母组与“names.txt”文件中的ArrayList进行比较,从中提取名称。名称约为15000个,每个名称以单独/单行的形式存储。实际上,我正在将这些名称添加到ArrayList中,以确定该文件中是否存在特定的名称。一切都已完成并经过测试,只剩下读取文件了。我在JavaIDE上尝试过同样的代码,从驱动器读取文件,它在JavaIDE上工作,但在AndroidStudio中不工作。 一段代码:

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需要文件系统路径

输入流没有构造函数

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

将文件从资源复制到文件系统

然后在文件系统上使用该文件

如果你不坚持使用FileReader,你可以改变

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


您不需要
文件阅读器
。使用
BufferedReader
包装在
InputStreamReader
包装在
InputStream
上,该
InputStream
已从
getAssets().open()获得

的目标仅仅是了解如何使用
FileReader
,或者您会接受任何读取资产文件的解决方案吗?
文件的路径是
,即开发pc上的路径。这样的路径与android设备上的文件系统无关。@Barns感谢您的回复,我绝对需要并接受解决方案,这就是我想要得到的,可能的解决方案或解决我问题的代码。你想要的最终结果是什么?只需一个
字符串
包含文件内容?@greenapps感谢您的时间和回复,您能帮我整理一下并提供解决问题的解决方案/代码吗?如果无法使用FileReader读取文件,还有什么可以帮助您呢?我已经告诉过您要如何解决问题。然后您可以使用FileReader。我想知道为什么这还不清楚。只要你坚持使用FileReader,你就必须这么做。你从来没有告诉过你为什么要使用FileReader。再看一下描述,我已经更新并改进了解释。希望它能更好地解释这个问题。构造函数
BufferedReader(InputStream-in)
也不存在。我的上帝。。。这是一个发布答案的好机会@我试过你的作品,但也不管用。错误:不兼容类型:InputStream无法转换为读取器下一步要做什么?
InputStream is = getAssets().open("images/names.txt");
BufferedReader br = new BufferedReader(is);