[英]reading resource as InputStream in android
我有一些android项目,正在尝试从“ res / drawable-xhdpi”目录中读取一些文件,因此我把
InputStream is = null;
try {
is = getResources().openRawResource(R.drawable.my_btn); //my_btn is inside drawable-xhdpi directory
} catch (Exception e) {
e.printStackTrace();
}
但我明白了
error opening trace file: No such file or directory
我该如何处理这个问题。 我尝试使用绝对路径直接从FileInputStream
读取此信息,然后我意识到从中提取文件的根目录是JVM
的根目录,因此我仍然得到相同的信息。 No such file or directory
错误消息
更新:
我在src/main
侧面添加了一个assets
目录,然后将my_btn.png
放在其中,然后在MainActivity
类中调用
InputStream is = null;
try {
is = getAssets().open("my_btn.png");
} catch (Exception e) {
e.printStackTrace();
}
但我仍然遇到相同的错误
仅当您在xhdpi
设备上运行应用程序时, xhdpi
从"res/drawable-xhdpi"
获取"res/drawable-xhdpi"
xhdpi
。 否则,它将尝试根据屏幕从相应的drawable文件夹中获取drawable,如果不存在,则会出现与上述相同的错误。 如果不确定使用哪种屏幕尺寸,最好的解决方法是在res文件夹中创建一个名为"drawable"
的目录(即"res/drawable"
),然后将my_btn
添加到新创建的"drawable"
文件夹中。 然后,无论屏幕大小如何,它将从新文件夹中获取图像。
编辑
您使用的是原始文件夹,而不是资源文件夹。 openRawResource
从原始文件夹读取。 使用以下代码获取可绘制对象并将其转换为输入流(您必须使用try-catch包围)。
Drawable drawable = getResources().getDrawable(R.drawable.my_btn);
BitmapDrawable bitmapDrawable = ((BitmapDrawable) drawable);
Bitmap bitmap = bitmapDrawable.getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100, stream); //use the compression format of your need
InputStream is = new ByteArrayInputStream(stream.toByteArray());
_pm.iconStream = getResources()。openRawResource(+ R.drawable.pdf_icon);
我只是在尝试测试,然后拍照并发送给Parse
将测试图像放置在res/raw/
(然后使用R.raw.whatever_you_call_the_image
使用现有代码)或assets/
(然后使用getAssets().open()
在assets/
内的相对路径)放置到您的位置图片)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.