• Android开发——遍历读写U盘、SD卡等外部存储


    1.首先需要得到挂载在手机上的有哪些盘符

            String[] result = null;
            StorageManager storageManager = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
            try {
                Method method = StorageManager.class.getMethod("getVolumePaths");
                method.setAccessible(true);
                try {
                    result =(String[])method.invoke(storageManager);
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
                for (int i = 0; i < result.length; i++) {
                    System.out.println("path----> " + result[i]+"
    ");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

    这里需要用到一个被系统隐藏的方法,即StorageManager下的getVolumePaths()方法。具体通过反射得到。方法返回值为字符串数组,在我的真机上可以获得三个盘符:sdcard0 sdcard1 usbdisk。


    2.拿到上面的根目录路径之后,即可运用listFiles()方法遍历所有的文件

            private void getAllFiles(File path){  
            File files[] = path.listFiles();  
            if(files != null){  
                for (File f : files){  
                    if(f.isDirectory()){  
                        getAllFiles(f);  
                    }else{  
                        System.out.println(f);  
                    }  
                }  
            }  
        }  

    这样就完成了所有文件的遍历,如果需要读写,通过指定路径拿到File对象实例,再操作文件流即可。

    这里需要说明的是,手机如果想读写USB,本身需要支持USB-OTG功能。该功能除了支持U盘,还支持外接鼠标,键盘,游戏手柄,移动硬盘(需要更大电压)等。

    从硬件上说,Android4.0或以上系统的智能手机芯片都支持USB-OTG了,如果不支持的话,可能是以下两个原因。   

    1、硬件上缺少5V升压器,外接设备没有电压供应。 

    2、硬件设备制造商为了省电考虑,从系统上屏蔽了USB-OTG功能。

    解决系统屏蔽OTG问题,网上的方法是(没有测试过):

    1.ROOT后打开RE管理器,编辑system/etc/vold.fstab文件,在vold.fstab的末尾添加如下代码
    # usb otg diskdev_mount usbotg /mnt/usbotg auto /devices/platform/mt_usb /devices/platform/musbfsh_hdrc
    2.修改保存,重启手机


    3. Android6.0亲测利用反射获取不到U盘的挂载路径,Google了一下发现默认挂载在了/mnt/media_rw/<随机的ID>

    ADB Shell里可以正常访问,需要Root权限。


  • 相关阅读:
    最长严格上升子序列
    01背包
    八数码难题
    跳石头
    立体图
    质因数分解 2012年NOIP全国联赛普及组
    多项式输出 2009年NOIP全国联赛普及组
    绕钉子的长绳子
    数星星
    进制转换
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461618.html
Copyright © 2020-2023  润新知