我有一个用核心jdk编译的jar。
它包含一个读取txt文件的java类。 它有一个测试证明这个类正常工作。
如果我在我的android项目中包含这个jar,然后调用读取txt文件的java类。报告失败:java.io.FileNotFoundException并在我想要加载的txt文件的路径中添加'/'。
Android的安全模型是否阻止读取txt文件?
我的项目结构:
Android模块:
src / Loader.java [调用GetName.java]
Java模块:
test / TestGetName.java [调用GetName.java]
的src / GetName.java
资源/ names.txt中
要点:
TestGetName.java正常工作
Loader.java失败。 GetName
中引发FileNotFoundException答案 0 :(得分:2)
最终计算出来。我需要一个条件来查看我是在本地加载文件还是作为资源加载。如果不使用条件,可能有一种更简洁的方法。
String source = "resources/inputfile.txt";
BufferedReader fin;
InputStream inputStream = getClass().getResourceAsStream(source.substring(source.lastIndexOf("/")));
if (inputStream != null) {
fin = new BufferedReader(new InputStreamReader(inputStream));
} else {
fin = new BufferedReader(new FileReader(new File(source)));
}
感谢您提供有关阅读资源的提示用户77777777
答案 1 :(得分:1)
似乎Android没有阻止它访问该文件,因为例外是FileNotFoundException
。您应该检查详细消息以确认。捕获异常并打印详细消息。这会给你一个更好的主意。还要重新检查文件路径。
编辑: 尝试仅传递资源名称。
getClassLoader().getResource("names.txt");
答案 2 :(得分:0)
我不知道为什么但是接受的答案对我不起作用。
构建系统:Gradle
工作环境:Android Studio
我还包括来自外部jar的资源。但是为了使用它们,我还必须包括完整路径。
this.getClass().getResourceAsStream("/template/login.xml")
希望这可以帮助某人并阻止他花3个小时撞到墙上寻找答案。