我有一个 java .jar 库,我试图从那里访问我的 Android 项目的文件 与:
InputStream inputStream = getClass().getResourceAsStream("/folder/data.txt");
someMethod(inputStream); // inputStream is null
但是inputStream
始终为null
。我很困惑应该将 /folder/data.txt
放在哪里
能够从.jar中找到它。
从 .jar 项目中我可以找到 data.txt,在 eclipse 中执行以下操作:
MyProject > properties > java build path > libraries > Add class folder
和这段代码:
InputStream inputStream = getClass().getResourceAsStream("/data.txt"); // without the folder
这是 Java 项目的结构:
MyJavaProject
- src
- com.example
- something.java
- folder
- data.txt
现在,在 Android 项目中我尝试做同样的事情,但我总是得到 null (inputStream):
MyAndroidProject
- src
- several packages
- folder
- data.txt
- libs
- my jar
我应该把 data.txt 放在哪里?或者我应该更改 .jar 中的某些内容
我读过很多类似的问题,但没有找到解决方案。我还读过有关 getResourceAsStream()
的内容,但我显然没有明白。
最佳答案
getResourceAsStream()
在 android 中并不是很有用。它指的是嵌入在 JAR 或类路径容器中的文件,而不是 android 资源。您可能想改用 android assets
功能。您只需将资源文件 ("data.txt"
) 放置在项目的 assets/
目录下即可。
要获取 Assets 的 InputStream
,您可以使用 AssetsManager
,如下所示(为了清楚起见,省略了错误处理:
// get the assets manager from your activity or `Context`
final AssetsManager am = getAssets();
final InputStream in = am.open("data.txt");
// do stuff with the input stream
另一种方法是使用Resources
来代替,但这取决于data.txt
的内容Resources适用于android知道如何加载和解析的数据类型,例如可绘制对象、字符串和各种 xml 文件。 Assets 用于您将自己阅读和解析的原始数据。
关于java - getResourceAsStream() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585212/