В J2ME я делаю это вот так:
getClass().getResourceAsStream("/raw_resources.dat");
Но в android я всегда получаю null на этом, почему?
В J2ME я делаю это вот так:
getClass().getResourceAsStream("/raw_resources.dat");
Но в android я всегда получаю null на этом, почему?
InputStream raw = context.getAssets().open("filename.ext");
Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));
Для сырых файлов вам следует рассмотреть возможность создания необработанной папки внутри каталога res, а затем вызвать getResources().openRawResource(resourceName)
из вашей активности.
В некоторых ситуациях нам нужно получить изображение из рисованной или необработанной папки, используя вместо этого имя изображения, если сгенерированный id
// Image View Object
mIv = (ImageView) findViewById(R.id.xidIma);
// create context Object for to Fetch image from resourse
Context mContext=getApplicationContext();
// getResources().getIdentifier("image_name","res_folder_name", package_name);
// find out below example
int i = mContext.getResources().getIdentifier("ic_launcher","raw", mContext.getPackageName());
// now we will get contsant id for that image
mIv.setBackgroundResource(i);
TextView txtvw = (TextView)findViewById(R.id.TextView01);
txtvw.setText(readTxt());
private String readTxt()
{
InputStream raw = getResources().openRawResource(R.raw.hello);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try
{
i = raw.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = raw.read();
}
raw.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return byteArrayOutputStream.toString();
}
TextView01:: txtview в linearlayout hello::.txt файл в папке res/raw (u может получить доступ к любой папке othr как обычно)
Ist 2 строки 2 написаны в методе onCreate()
rest должен быть записан в классе, расширяющем Activity!!
getClass().getResourcesAsStream()
отлично работает на Android. Просто убедитесь, что файл, который вы пытаетесь открыть, правильно встроен в ваш APK (откройте APK как ZIP).
Обычно на Android вы помещаете такие файлы в каталог assets
. Поэтому, если вы поместите raw_resources.dat
в подкаталог assets
вашего проекта, он окажется в каталоге assets
в APK, и вы можете использовать:
getClass().getResourcesAsStream("/assets/raw_resources.dat");
Также можно настроить процесс сборки, чтобы файл не попадал в каталог assets
в APK.
InputStream in = getResources(). openRawResource (имя ресурса);
Это будет работать правильно. До этого вам нужно создать файл/текстовый файл xml в raw-ресурсе. Тогда он будет доступен.
Изменить. Несколько раз com.andriod.R будет импортироваться, если в файле макета или имени изображения есть ошибка. Поэтому вам нужно правильно импортировать пакет, тогда будет доступен только исходный файл.
В предварительном подходе используется функция расширения Kotlin
fun Context.getRawInput(@RawRes resourceId: Int): InputStream {
return resources.openRawResource(resourceId)
}
Еще одна интересная вещь - использование функции расширения, которая определена в Closeable scope
Например, вы можете работать с потоком ввода элегантным способом без обработки исключений и управления памятью
fun Context.readRaw(@RawRes resourceId: Int): String {
return resources.openRawResource(resourceId).bufferedReader(Charsets.UTF_8).use { it.readText() }
}