Turns out Java has no mechanism for discovering the names of disk volumes. You can use java.io.File.listRoots() to get the root paths for multiple disks, but you can’t auto-discover their names.
Here’s a quick hack that will work on Windows. It uses Runtime.getRuntime().exec() to run “cmd /c dir
import java.io.*;
void setup() {
println("Testing getVolName");
String path="D:";
println("Volume name for "+path+" is: "+
"'"+getDiskVolumeName(path)+"'");
}
public static String getDiskVolumeName(String path) {
String volname="Unknown";
String check="Volume in drive "+path.charAt(0)+" is ";
try {
Process p=Runtime.getRuntime().exec("cmd /c dir "+path);
//p.waitFor();
BufferedReader reader=new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null) {
if(line.indexOf(check)!=-1)
volname=line.substring(line.indexOf(check)+check.length());
// System.out.println(line);
line=reader.readLine();
}
}
catch(Exception e1) {
println("Failure: "+e1.toString());
}
return volname;
}
Comment on this entry




