如何确定 Android 中外部存储的文件系统类型?

How can I determine the files system type of external storage in Android?

我正在编写一个将文件写入 USB 闪存驱动器(通过 USB OTG)的应用程序,然后将其从 phone 中删除并在其他地方使用(仅支持 FAT32)。我需要能够确定外部存储的格式是否正确,如果不正确,我需要告诉用户。

如果我连接 FAT32 格式的驱动器,在 android shell 上调用 mount 仅表示 "fuse" 作为文件系统:

/dev/fuse /storage/usbotg fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0

有没有办法通过命令行或编程方式确定文件系统?

你得到挂载命令列表:

ArrayList<String> listMount = new ArrayList<String>();
Process p=null;

    try {
         p = Runtime.getRuntime().exec("mount");
         BufferedReader in2 = new BufferedReader(new InputStreamReader(p.getInputStream()));
         String line;
         while ((line = in2.readLine()) != null) {  
            listMount.add(line);
         }
    } catch (Exception e) {
         // manage exception
    }

在listMount 中有mount 的输出。搜索您的 /dev 并检查这是 vfat(文件系统 FAT 或 FAT32)。如果只看到 'fuse' 我相信 android 只能识别您的设备 USB OTG 而不是最终的 USB。

fuse 用于挂载其他文件系统类型,如 NTFS。