如何使用Java获取硬盘的序列号?
如何使用Java获取硬盘的序列号?
Java运行在虚拟机上,没有硬盘只有文件和文件系统。您可以通过从Java运行适当的命令行实用程序来获取此信息。
在Linux上,您可以执行以下操作:
hdparm -i /dev/hda
好消息,FileStore对象有一个volume:vsn
属性。
for (FileStore store: FileSystems.getDefault().getFileStores()) {
System.out.format("%-20s vsn:%s\n", store, store.getAttribute("volume:vsn"));
}
-1037833820
,194154
)。在 Windows 机器上,您可以使用
public static String getSerialKey(Character letter) throws Exception{
String line = null;
String serial = null;
Process process = Runtime.getRuntime().exec("cmd /c vol "+letter+":");
BufferedReader in = new BufferedReader(
new InputStreamReader(process.getInputStream()) );
while ((line = in.readLine()) != null) {
if(line.toLowerCase().contains("serial number")){
String[] strings = line.split(" ");
serial = strings[strings.length-1];
}
}
in.close();
return serial;
}
如果您使用的是Windows操作系统,版本为Win7 SP1或更高版本,则可以通过在Java程序中执行以下cmd命令来获取它,通过wmic。
wmic diskdrive get serialnumber
对于 Windows 机器,您可以使用参数执行 wmic
,然后像以下代码片段中所做的那样解析结果:
public static String getNumeroDisq() throws IOException {
Runtime runtime = Runtime.getRuntime();
String[] commands = {"wmic", "diskdrive", "get", "SerialNumber"};
Process process = runtime.exec(commands);
String chain = null;
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String serialNumber= null;
while ((serialNumber = bufferedReader.readLine()) != null) {
if (serialNumber.trim().length() > 0) {
chain = serialNumber;
}
}
return chain.trim();
}
}