从另一个程序获得 Assests 文件夹下的东西

本文介绍了在Android中如何利用AssetManager类来读取和遍历assets文件夹下的所有文件及子文件夹,包括文件路径的正确指定方式,并通过示例代码展示了具体的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Resources r = this.getResources(); 
AssetManager a = r.getAssets(); 
String[] list = a.list("/"); 
Log.d("test", "Length of / is "+list.length); 
for (String s : list) { 
   
Log.d("test", s); 
} 
按照上面的写法是错误的 String[] names = am.list(""); 中间是空格

也可以AssetManager am = this.getAssets(); 
String[] names = am.list(""); 

 

如果是asset下的子文件夹String[] names= am.list("subfolder"); 
如果是asset下的文件InputStream in = am.open("file.png");

子文件夹下的文件 InputStream in = am.open("subfolder/file.png");

然后使用

Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 

3.

void displayFiles (AssetManager mgr, String path) { 
   
try { 
       
String list[] = mgr.list(path); 
       
if (list != null) 
           
for (int i=0; i<list.length; ++i) 
               
{ 
                   
Log.v("Assets:", path +"/"+ list[i]); 
                    displayFiles
(mgr, path + "/" + list[i]); 
               
} 
   
} catch (IOException e) { 
       
Log.v("List error:", "can't list" + path); 
   
} 
 
一定注意加/

4.这个问题还会遇到解析出来的是系统目录

http://groups.google.com/group/android-developers/browse_thread/thread/2b110c3c30d8df93/7d8191d6302bca2c?pli=1

参看这里

Did this code:

                try
                {
                        String fileArray[] = context.getAssets().list( "" );

                        if( fileArray != null)
                                for( int i = 0; i < fileArray.length; ++i )
                                {
                                        Log.v( " ASSETS_DIR File", fileArray[i] );
                                        try
                                        {
                                                String subfileArray[] =
context.getAssets().list( fileArray[i] );

                                                if( subfileArray != null)
                                                        for( int j = 0; j < subfileArray.length; ++j )
                                                        {
                                                                Log.v( " ASSETS_SUBDIR File", fileArray[i] + ":" +
subfileArray[j] );
                                                        }

                                        }
                                        catch( IOException e)
                                        {
                                                Log.e( "ASSETS_SUBDIR", "Can't List files!" );
                                        }

                                }

                }
                catch( IOException e)
                {
                        Log.e( "ASSETS_DIR", "Can't List files!" );
                }

And got the following result.

DUMP from logcat !

V/ASSETS_DIR File(7570): images
V/ASSETS_SUBDIR File(7570): images:corky.png
V/ASSETS_SUBDIR File(7570): images:cylon_dot.png
V/ASSETS_SUBDIR File(7570): images:cylon_left.png
V/ASSETS_SUBDIR File(7570): images:cylon_right.png
V/ASSETS_SUBDIR File(7570): images:violet.png
V/ASSETS_DIR File(7570): skins
V/ASSETS_SUBDIR File(7570): skins:contact-andy-rubin.png
V/ASSETS_SUBDIR File(7570): skins:contact-larry-page.png
V/ASSETS_DIR File(7570): sounds
V/ASSETS_SUBDIR File(7570): sounds:bootanim0.raw
V/ASSETS_SUBDIR File(7570): sounds:bootanim1.raw
V/ASSETS_DIR File(7570): webkit
V/ASSETS_SUBDIR File(7570): webkit:missingImage.png
V/ASSETS_SUBDIR File(7570): webkit:nullplugin.png
V/ASSETS_SUBDIR File(7570): webkit:textAreaResizeCorner.png

void displayFiles (AssetManager mgr, String path) {
    try {
        String list[] = mgr.list(path);
        if (list != null)
            for (int i=0; i<list.length; ++i)
                {
                    Log.v("Assets:", path +"/"+ list[i]);
                    displayFiles(mgr, path + list[i]);
                }
    } catch (IOException e) {
        Log.v("List error:", "can't list" + path);
    }

 

}

AssetManager mgr = new AssetManager();
displayFiles(mgr, "/");

prints:

V/Assets: (13257): //AndroidManifest.xml
V/Assets: (13257): //META-INF
V/Assets: (13257): //assets
V/Assets: (13257): //res
V/Assets: (13257): //resources.arsc

displayFiles(mgr, "");

prints:

displayFiles(mgr, "");

prints:

V/Assets: (14399): /images
V/Assets: (14399): images/corky.png
V/Assets: (14399): images/cylon_dot.png
V/Assets: (14399): images/cylon_left.png
V/Assets: (14399): images/cylon_right.png
V/Assets: (14399): images/violet.png
V/Assets: (14399): /skins
V/Assets: (14399): skins/contact-andy-rubin.png
V/Assets: (14399): skins/contact-larry-page.png
V/Assets: (14399): /sounds
V/Assets: (14399): sounds/bootanim0.raw
V/Assets: (14399): sounds/bootanim1.raw
V/Assets: (14399): /webkit
V/Assets: (14399): webkit/missingImage.png
V/Assets: (14399): webkit/nullplugin.png
V/Assets: (14399): webkit/textAreaResizeCorner.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值