在J2ME中,我这样做:
getClass().getResourceAsStream("/raw_resources.dat");
但是在android中,我总是对此有效,为什么?
答案 0 :(得分:118)
对于原始文件,您应该考虑在res目录中创建一个原始文件夹,然后从您的活动中调用getResources().openRawResource(resourceName)
。
答案 1 :(得分:25)
InputStream raw = context.getAssets().open("filename.ext");
Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));
答案 2 :(得分:13)
在某些情况下,如果生成了id
,我们必须使用图像名称从drawable或raw文件夹中获取图像// 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);
答案 3 :(得分:4)
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();
}
linearlayout中的TextView01 :: txtview res / raw文件夹中的hello :: .txt文件(你可以访问ny othr文件夹)
Ist 2行是2在onCreate()方法中写的
休息是在类扩展Activity !!中编写的。
答案 4 :(得分:4)
一种先进的方法是使用Kotlin Extension function
fun Context.getRawInput(@RawRes resourceId: Int): InputStream {
return resources.openRawResource(resourceId)
}
另一个有趣的事情是在可关范围内定义的扩展功能使用
例如,您可以优雅地处理输入流,而无需处理异常和内存管理
fun Context.readRaw(@RawRes resourceId: Int): String {
return resources.openRawResource(resourceId).bufferedReader(Charsets.UTF_8).use { it.readText() }
}
答案 5 :(得分:3)
InputStream in = getResources()。openRawResource(resourceName);
这将正常工作。在此之前,您必须在原始资源中创建xml文件/文本文件。然后就可以访问了。
修改
如果布局文件或图片名称中有任何错误,有时会导入com.andriod.R。因此,您必须正确导入包,然后才能访问原始文件。
答案 6 :(得分:3)
getClass().getResourcesAsStream()
在Android上正常运行。只需确保您尝试打开的文件已正确嵌入APK(打开APK为ZIP)。
通常在Android上,您将此类文件放在assets
目录中。因此,如果您将raw_resources.dat
放在项目的assets
子目录中,它将最终位于APK中的assets
目录中,您可以使用:
getClass().getResourcesAsStream("/assets/raw_resources.dat");
也可以自定义构建过程,以使文件不会落在APK的assets
目录中。
答案 7 :(得分:0)
这对我有用:getResources().openRawResource(R.raw.certificate)