我怎样才能获得我上传到资产或在android中绘制的图像的路径?

时间:2011-04-19 02:05:10

标签: android file android-emulator filepath


   我是android的新手,不太了解它。我已将图像导入到我的项目中,当我尝试使用文件检查文件是否存在时。

这是我用过的代码..

 existingFileName="res/drawable-ldpi/login.png";  
 File f= new File(existingFileName);  
      //  Log.d("Image path",);  
        if(f.exists())  
        {  
            Log.d("EXISTS", "====File Exists===");  
        }

仍然显示我没有图像存在。

提前感谢您的帮助,    ABY

6 个答案:

答案 0 :(得分:8)

如果您将图像放在可绘制文件夹中,我认为您不能像这样访问它们。试试这个

Drawable image= getResources().getDrawable(R.drawable.<id>); 

id将是您的文件名。

答案 1 :(得分:4)

如果您将图像存储在“res / drawable”文件夹中,则可以执行以下操作:

Drawable drawable = getResources().getDrawable(R.drawable.name)

请参阅http://developer.android.com/reference/android/content/res/Resources.html#getDrawable

如果您将图片存储在资源文件夹中,则需要使用getAssets()http://developer.android.com/reference/android/content/Context.html#getAssets())

您可以这样做:

InputStream is = getAssets().open(imageName);
BufferedInputStream buf = new BufferedInputStream(is);
Bitmap bitmap = BitmapFactory.decodeStream(buf);

请记住,对于这两种情况,您需要Context(即Activity

答案 2 :(得分:2)

在您阅读之前,no need to check存在资产文件。 AssetManager takes care of it。如果文件丢失,则抛出异常。您的编码实践应该始终将该部分代码包含在try catch中并拆分逻辑。不需要额外的代码。如果您尝试打开不存在的文件,则会出现异常。

但是,如果您仍想进行该手动作业,请尝试以下代码。

AssetManager mg = getResources().getAssets();

try {

  //do all considering file exists 
     mg.open(pathInAssets);
} catch (IOException ex) {
  //do all in case file is missing
}

如果您的文件位于assets / folder / file.ext,则pathInAssets将为"folder/file.ext"

Check for file existence in androids assets folder?

How to check Android Asset resource?

答案 3 :(得分:1)

通常,如果使用res / drawable,则会将您的资源标识符编译到R.java文件中。因此,如果您使用那里的标识符,您可以确定文件在那里,否则您无法编译您的项目。

如果您想稍后交换R.java并且真的需要在res / drawable中列出资源,可以使用java Reflection来检查R类,如下所示:

    Class<?> c=R.drawable.class;
    Field[] fs=c.getFields();
    for(Field f: fs)
        Log.v("test", f.getName());

然后,您将获得一个没有文件扩展名的资源列表。然后使用int id=f.getInt(null);读取每个资源的资源标识符(整数)。

答案 4 :(得分:1)

使用eclipse中的DDMS透视图在运行应用程序的模拟器上浏览图像。

答案 5 :(得分:1)

如果您收到此错误..“无法对static类型的non-static方法getResources()进行ContextWrapper引用”

试试Drawable image=Classname.this.getResources().getDrawable(R.drawable.<id>); 这里Classname.this表示ClassContext / Application Context。