美文网首页工作生活
android代码中获取文件系统分区格式

android代码中获取文件系统分区格式

作者: 金卡戴珊ugly | 来源:发表于2019-07-01 10:01 被阅读0次

    上周的项目中,文件复制功能测试部发现bug,fat格式U盘在拷贝4g以上文件时,出现进度停止不动的现象。作为一个老司机自然明白fat32格式的u盘是无法单次拷贝超过4g的文件。所以解决方式是做一个提示。但是如何判断u盘是fat32格式呢?
    代码中执行linux命令。获得结果字符串,使用截取的方式获得vfat字段就可以了。

    /**
         * 获取磁盘分区格式类型
         */
        public static String getFileSystem(File path){
            try{
                Process mount = Runtime.getRuntime().exec("mount");
                BufferedReader reader = new BufferedReader(new InputStreamReader(mount.getInputStream()));
                mount.waitFor();
                String line;
                while ((line = reader.readLine()) != null) {
                    String[] split = line.split("\\s+");
                    for (int i = 0; i < split.length - 1; i++){
                        if (!split[i].equals("/") && path.getAbsolutePath().equals(split[i]))//startWith
                            return split[i + 1];
                    }
                }
                reader.close();
                mount.destroy();
            }catch(IOException | InterruptedException e){
                e.printStackTrace();
            }
            return null;
        }
    

    使用方法,判断是否返回vfat字段,给出提示。

    //当文件系统格式为fat32,且单文件大于4g时。提示不能复制。
      long limit = 4096*1024;
      if(TextUtils.equals("vfat", FileUtils.getFileSystem(new File(storagePaths[i])))
      && fromFile.length() > limit*1024) {
        Toast.makeText(FolderListActivity.this, getString(R.string.storage_file_system_unspport), Toast.LENGTH_LONG).show();
        return;
      }
    

    相关文章

      网友评论

        本文标题:android代码中获取文件系统分区格式

        本文链接:https://www.haomeiwen.com/subject/bhbwcctx.html