Доступ к файлам ресурсов на Android
У меня есть файл ресурсов в моей/res/raw/папке (/res/raw/textfile.txt), которую я пытаюсь прочитать из моего приложения для Android для обработки.
public static void main(String[] args) {
File file = new File("res/raw/textfile.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
while (dis.available() != 0) {
// Do something with file
Log.d("GAME", dis.readLine());
}
fis.close();
bis.close();
dis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Я пробовал использовать другой синтаксис пути, но всегда получаю ошибку java.io.FileNotFoundException. Как я могу получить доступ к /res/raw/textfile.txt для обработки? Является File file = new File ( "res/raw/textfile.txt" ); неправильный метод в Android?
* Ответ: *
// Call the LoadText method and pass it the resourceId
LoadText(R.raw.textfile);
public void LoadText(int resourceId) {
// The InputStream opens the resourceId and sends it to the buffer
InputStream is = this.getResources().openRawResource(resourceId);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String readLine = null;
try {
// While the BufferedReader readLine is not null
while ((readLine = br.readLine()) != null) {
Log.d("TEXT", readLine);
}
// Close the InputStream and BufferedReader
is.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Ответы
Ответ 1
Если у вас есть файл в res/raw/textfile.txt
из вашего вызова Activity/Widget:
getResources().openRawResource(...)
возвращает InputStream
Точки должны фактически быть целым числом, найденным в R.raw... соответствующим вашему имени файла, возможно R.raw.textfile
(обычно это имя файла без расширения)
new BufferedInputStream(getResources().openRawResource(...));
затем прочитайте содержимое файла как поток
Ответ 2
Просто тот факт, что у вас есть этот public static void main(String[] args)
, означает, что вы неправильно используете свой код. Вы почти наверняка не прошли ни одного из приветственных упражнений для Android. Вы должны это сделать.