如何在Android目录外包含一个文件并在Android中使用它?

时间:2017-11-09 03:36:43

标签: java android

我尝试使用共同的核心代码目录和每个代码的平台相关部分为Android和JavaFX构建一个java程序。这些平台相关选项之一称为资源,它应该加载文本,图像和(最终)音频文件。 JavaFX版本运行良好,程序的框架出现并可以使用。但是,Android版本不会显示任何内容。我已经追溯到这样一个事实:我的资源没有加载,抛出各种异常,大部分都是NullPointerExceptions。我不确定问题是由于没有包含资源还是给错误的地方查看程序。我的gradle文件目前有以下相关内容:

sourceSets {
    main.java.srcDirs += '../../Both'
    main.res.srcDirs += '../../Resources'
}

../../Both目录正确地构建到代码中,因为它正确构建和运行,并且Both Directory和Android目录都使用它。 但是,资源包括(大部分)一些Art子目录。

我已经尝试了以下代码来读取文件,主要来自javafx等效文件(有效):

private static String getPath(String resource)
{
    return "/Resources/"+resource;
}
public static ArrayList<String> loadText(String resource)
{
    try{
        if(filecache.containsKey(resource))
            return filecache.get(resource);
        InputStream in = R.getClass().getResourceAsStream(getPath(resource));
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        ArrayList<String> lines = new ArrayList<>();
        String t;
        while((t = reader.readLine()) != null)
            lines.add(t);
        filecache.put(resource, lines);
        return lines;
    } catch(Exception e){Debug.log(e.toString());}
    return new ArrayList<>();
}

使用我在这里找到的一些代码,我也试过这个,以及它的几个变种,但都没有成功。 (使用相同的getPath()方法)

ArrayList<String> res = new ArrayList<String>();
    try {
        InputStream inputStream = new android.content.res.Resources().(getPath(resource));

        if ( inputStream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";

            while ( (receiveString = bufferedReader.readLine()) != null ) {
                res.add(receiveString);
            }
        }
        return res;
    } catch(Exception e){Debug.log("While opening: " + resource);Debug.log(e);}
    return new ArrayList<String>();
}

这两个构建,但抛出异常并且不加载文件。 有关如何阅读文件的任何见解?谢谢!

0 个答案:

没有答案