Как читать файл из res / raw по имени
Я хочу открыть файл из папки res / raw/.
Я абсолютно уверен, что файл существует.
Чтобы открыть файл, который я пробовал
File ddd = new File("res/raw/example.png");
команда
ddd.exists();
доходность ложные. Так что этот метод не работает.
попытка
MyContext.getAssets().open("example.png");
заканчивается в исключении с getMessage ()"null".
просто используя
R.raw.example
невозможно, потому что имя файла только известен во время выполнения как строка.
Почему так трудно получить доступ к файлу в папке / res / raw/ ?
3 ответов:
С помощью данных ссылок мне удалось решить проблему самостоятельно. Правильный способ-получить идентификатор ресурса с помощью
getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION", "raw", getPackageName());чтобы получить его как InputStream
InputStream ins = getResources().openRawResource( getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION", "raw", getPackageName()));
вот пример взятия XML-файла из папки raw:
InputStream XmlFileInputStream = getResources().openRawResource(R.raw.taskslists5items); // getting XMLзатем вы можете:
String sxml = readTextFile(XmlFileInputStream);когда:
public String readTextFile(InputStream inputStream) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte buf[] = new byte[1024]; int len; try { while ((len = inputStream.read(buf)) != -1) { outputStream.write(buf, 0, len); } outputStream.close(); inputStream.close(); } catch (IOException e) { } return outputStream.toString(); }
вы можете читать файлы в raw / res с помощью
getResources().openRawResource(R.raw.myfilename).но есть ограничение IDE, что имя файла, которое вы используете, может содержать только строчные буквенно-цифровые символы и точку. Так что имена файлов, как
XYZ.txtилиmy_data.binне будет указан в R.
Comments