我有一个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()
,但我显然没有得到它。
答案 0 :(得分:1)
getResourceAsStream()
在Android中并不是非常有用。它指的是嵌入在JAR或类路径容器中的文件,而不是android资源。您可能希望使用android assets
功能。您只需将资产文件("data.txt"
)放在项目的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
的内容资源适用于android知道如何加载和解析的数据类型,例如drawables,strings和各种xml文件。资产用于您将要阅读和解析的原始数据。
答案 1 :(得分:0)
Android中的resouse意味着drawables,values .. etc文件夹。
对于文本文件,创建一个名为raw的文件夹并将数据文件放在那里。
尝试将路径发送到库方法,如data.txt,然后作为raw / data.txt发送