How to check the type of sdcard's filesystem?
For example, in Windows we can see NTFS, FAT32, exFAT, etc.
Thanks in advance.
How to check the type of sdcard's filesystem?
For example, in Windows we can see NTFS, FAT32, exFAT, etc.
Thanks in advance.
One solution is to run the mount command then do some string processing on the result:
try{
Process mount = Runtime.getRuntime().exec("mount");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(mount.getInputStream()));
mount.waitFor();
String extPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String line;
while ((line = bufferedReader.readLine()) != null)
{
String[] split = line.split("\\s+");
for(int i = 0; i < split.length - 1; i++)
{
if(split[i].contentEquals(extPath) ||
split[i].contains("sdcard") ||
split[i].contains("_sd") ||
split[i].contains("extSd") ||
split[i].contains("_SD")) // Add wildcards to match against here
{
String strMount = split[i];
String strFileSystem = split[i+1];
// Add to a list/array of mount points and file systems here...
Log.i("SDCard", "mount point: "+ strMount + " file system: " + strFileSystem);
}
}
}
}catch(IOException e){
e.printStackTrace();
}catch(InterruptedException e){
e.printStackTrace();
}
Running this on my G Pro gave me the following results:
mount point: /mnt/media_rw/external_SD file system: vfat
mount point: /storage/external_SD file system: fuse
Some common Android file system types:
For custom path, we can use this static method:
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().startsWith(split[i]))
return split[i + 1];
}
}
reader.close();
mount.destroy();
}catch(IOException | InterruptedException e){
e.printStackTrace();
}
return null;
}
For example, below code:
Log.i("---", "Filesystem = "+ getFileSystem(Environment.getExternalStorageDirectory()));
will produce this output:
I/---: Filesystem = vfat