1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
public class MainActivity extends Activity { /** * 资源管理器,针对 /assets 文件夹的管理器 * ' /assets 中的文件特性: * ' 单个文件小于1m ; * ' 打包apk文件时不进行压缩,(还有个raw文件夹也不压缩,放置多媒体文件); * ' 文件只读,不能进行 写 操作; * ' assets的位置,不像其它目录,如cache位于 /data/data/应用包/cache 是可见、有方法获取的, * ' assets位于/data/app/应用项目名.apk里,并不是一个目录,所以不能通过File操作。仅能通过AssetManager读取 */ AssetManager am; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); am = getAssets(); // 第2个""表示assets文件夹根路径 listAssets("", ""); } /** * 遍历 assets 文件夹 * @param tab 格式化显示占位符 * @param path assets下的文件目录 */ private void listAssets(String tab, String path){ try { // 获取目录里全部的文件,包括文件夹 String[] list = am.list(path); for (int i = 0; i < list.length; i++) { Log.d("Day13", tab + list[i]); String op = null; // 子目录 if (path != "") op = path + "/" + list[i]; // 如果当前目录不是根目录时,创建子目录 else op = list[i]; // 如果当前是根目录,创建子目录 String[] list2 = am.list(op); // 获取子目录中全部内容 if(list2.length>0) // 如果获取到了,说明刚刚遍历的当前内容是个子目录。否则就是文件 listAssets(tab + "__", op); // 进入,进行遍历 } } catch (IOException e) { e.printStackTrace(); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/* 下面是打印结果,出现3个隐藏文件夹images、sounds、webkit。 10:40:42.605: D/(9788): Eminem.png 10:40:42.875: D/(9788): images 10:40:43.045: D/(9788): ____android-logo-mask.png 10:40:43.155: D/(9788): ____android-logo-shine.png 10:40:43.245: D/(9788): other 10:40:43.505: D/(9788): ____area.db 10:40:43.595: D/(9788): ____pkg 10:40:43.905: D/(9788): ________npkg 10:40:44.095: D/(9788): ____________area.db 10:40:44.205: D/(9788): ____________k 10:40:44.375: D/(9788): ________________Eminem.png 10:40:44.455: D/(9788): ________xx.png 10:40:44.545: D/(9788): sounds 10:40:44.715: D/(9788): ____bootanim0.raw 10:40:44.805: D/(9788): ____bootanim1.raw 10:40:44.885: D/(9788): webkit 10:40:45.055: D/(9788): ____android-weberror.png 10:40:45.145: D/(9788): ____hyph_en_US.dic 10:40:45.235: D/(9788): ____incognito_mode_start_page.html 10:40:45.315: D/(9788): ____missingImage.png 10:40:45.405: D/(9788): ____nullPlugin.png 10:40:45.485: D/(9788): ____play.png 10:40:45.575: D/(9788): ____textAreaResizeCorner.png 10:40:45.665: D/(9788): ____togglePlugin.png 10:40:45.755: D/(9788): ____youtube.html 10:40:45.835: D/(9788): ____youtube.png */ |
src下的资源文件遍历可以通过反射实现。
R.raw.class.getFields(),得到Fields集合,field.getName即文件名,进一步判断文件类型啥的既可以了。
-end
声明
本文由崔维友 威格灵 cuiweiyou vigiles cuiweiyou 原创,转载请注明出处:http://www.gaohaiyan.com/1604.html
承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设