AssetManager没有加载文件?

时间:2013-01-25 17:00:47

标签: android asset-management

我正在通过Mario Zechner的“开始Android游戏”一书的路上我很高兴我把它拿起但是我现在遇到一个问题,其中一个“测试”他要求用户在早期编写代码这本书。并不是说我反对编码它们,我宁愿知道我在做什么,也不愿意做一个半翘起的工作,当我再往前走时,它就不会很好。

所以AssetManager似乎不想加载我的文件。

    AssetManager am = getAssets();
    InputStream inputStream = null;
    try {
        am.open("assets/texts/hello.txt");
        String text = loadTextFile(inputStream);
        tv.setText(text);
    } catch (IOException e) {
        tv.setText("Could not Load file");
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                tv.setText("Could not close file");
            }
        }
    }
}

按照所有标准,我应该只能使用链接:“texts / hello.txt”,但每次我都会向我发射NPE。所以我被迫使用完整的链接。使用完整链接允许程序运行它只是无法按照它告诉我“无法加载文件”的说明加载我的文本文档

想想我现在将这个问题扼杀在萌芽状态,以便以后不会成为一个主要问题。

2 个答案:

答案 0 :(得分:2)

将代码更改为:

 AssetManager am = getAssets();
    InputStream inputStream = null;
    try {

         inputStream= am.open("texts/hello.txt"); //<<<<
        String text = loadTextFile(inputStream);
        tv.setText(text);
    } catch (IOException e) {

    // your code here

因为您将null inputStream传递给loadTextFile方法

答案 1 :(得分:0)

// To load text file
        InputStream input;
        try {
          input = assetManager.open("helloworld.txt");

             int size = input.available();
             byte[] buffer = new byte[size];
             input.read(buffer);
             input.close();

             // byte buffer into a string
             String text = new String(buffer);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }