Android - 从外部jar读取txt文件

时间:2011-08-23 17:25:18

标签: java android

我有一个用核心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

3 个答案:

答案 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个小时撞到墙上寻找答案。