2 jonahzheng jonahzheng 于 2013.04.27 14:17 提问

如何判断assets下的某一个文件是否存在

if ((new File("file://android_assets/aa.mp3")).exists()) {}
if ((new File("aa.mp3")).exists()) {}
以上方法都无法判断

4个回答

jonahzheng
jonahzheng   2013.05.02 13:58
已采纳

感谢以上两位朋友的回答,@franzhong的方式我用过,也是可以的
下面我用的方法,

/**  
     * 加载本地图片  
     * @param url  
     * @return  
     */    
    public static Bitmap getLoacalBitmapByAssets(Context c, String url)    
    {    
        Bitmap bitmap = null;    
        InputStream in = null;    
        try    
        {    
            in = c.getResources().getAssets().open(url);    
            bitmap = BitmapFactory.decodeStream(in);    
        }    
        catch (IOException e)    
        {    
            e.printStackTrace();    
        }    
        finally    
        {    
            closeStream(in, null);    
        }    
        return bitmap;    
    }   

            Bitmap bmp = getLoacalBitmapByAssets(getActivity(), strIconName);
            if (bmp!=null){ //如果返回的bmp不为空,表示存在这这个资源         
                ivIcon.setImageBitmap(bmp);
                //I
suannai0314
suannai0314 帮你编辑了下代码格式,详细的markdown使用方法见:http://ask.csdn.net/pages/markdown
4 年多之前 回复
franzhong
franzhong   2013.04.27 18:37
private boolean bAssetsFile(String pt){
       AssetManager am = getAssets();
       try {
        String[] names = am.list("");           
        for(int i=0;i<names.length;i++){
            //Log.d("FILES",names[i]);
            if(names[i].equals(pt.trim())){
                System.out.println(pt+"文件存在!!!!");
                return true;
            }else{
                //System.out.println(pt+"不存在啦!!!!");
            }
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("不存在!");
    return false;
}
//call the function
//bAssetsFile("blue_three.png");

默认访问assets根目录

feifei454498130
feifei454498130   2013.04.27 14:20
AssetManager asset = getAssets();
try {
    asset.open("filename");
} catch (IOException e) {
    e.printStackTrace();
}

如果异常就代表不存在吧

zhu071011
zhu071011 每次异常都会因为手机不同而产生100MS+的主线程中断时间,会影响性能不推荐!
一年多之前 回复
jonahzheng
jonahzheng 用常规的文件的open方法都是无法访问到文件的,asset下的文件比较特殊
4 年多之前 回复
xinjie1023
xinjie1023   2016.07.21 15:14

学习,谢谢·franzhong 。
如果判断APP包内对应的File文件夹下的某个文件是否存在,如何判别呢?

Csdn user default icon
上传中...
上传图片
插入图片