美文网首页工作生活
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