上周的项目中,文件复制功能测试部发现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;
}
网友评论