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();
}