AssetManager не загружает файл?

Я нахожусь на пути к книге Марио Зехнера "Начинающие игры для 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");
            }
        }
    }
}

По всем стандартам я должен иметь возможность просто использовать ссылку: "text / hello.txt", но каждый раз, когда я делаю это, стреляет в меня NPE. Поэтому я вынужден использовать полную ссылку. Использование полной ссылки позволяет программе запускать ее, просто не загружается мой текстовый документ, в соответствии с инструкциями, которые он говорит мне "Не удалось загрузить файл"

Подумал, я бы пресек эту проблему сейчас, чтобы она не стала основной проблемой позже.

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

потому что вы передаете ноль inputStream в loadTextFile метод

// 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();
        }
Другие вопросы по тегам