Sample disk utils program based on example posted to SourceForge
This commit is contained in:
132
samples/com/jacob/samples/system/DiskUtils.java
Normal file
132
samples/com/jacob/samples/system/DiskUtils.java
Normal file
@@ -0,0 +1,132 @@
|
||||
package com.jacob.samples.system;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
import com.jacob.activeX.ActiveXComponent;
|
||||
import com.jacob.com.ComThread;
|
||||
import com.jacob.com.Dispatch;
|
||||
import com.jacob.com.Variant;
|
||||
|
||||
/**
|
||||
* Example VB script that grabs hard drive properties.
|
||||
* <p>
|
||||
* Source Forge posting http://sourceforge.net/forum/forum.php?thread_id=1785936&forum_id=375946
|
||||
* <p>
|
||||
* Enhance by clay_shooter with info from http://msdn2.microsoft.com/en-us/library/d6dw7aeh.aspx
|
||||
*
|
||||
* @author qstephenson
|
||||
*
|
||||
*/
|
||||
public class DiskUtils {
|
||||
|
||||
/** formatters aren't thread safe but the sample only has one thread */
|
||||
private static DecimalFormat sizeFormatter = new DecimalFormat("###,###,###,###");
|
||||
|
||||
/** a pointer to the scripting file system object */
|
||||
private ActiveXComponent fileSystemApp = null;
|
||||
|
||||
/** the dispatch that points at the drive this DiskUtil operates against */
|
||||
private Dispatch myDrive = null;
|
||||
|
||||
/**
|
||||
* Standard constructor
|
||||
*/
|
||||
public DiskUtils(String drive){
|
||||
setUp(drive);
|
||||
}
|
||||
|
||||
/**
|
||||
* open the connection to the scripting object
|
||||
*/
|
||||
public void setUp(String drive){
|
||||
if (fileSystemApp == null){
|
||||
ComThread.InitSTA();
|
||||
fileSystemApp = new ActiveXComponent(
|
||||
"Scripting.FileSystemObject");
|
||||
myDrive = Dispatch.call(fileSystemApp, "GetDrive", drive)
|
||||
.toDispatch();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do any needed cleanup
|
||||
*/
|
||||
public void tearDown() {
|
||||
ComThread.Release();
|
||||
}
|
||||
|
||||
/**
|
||||
* convenience method
|
||||
* @return driver serial number
|
||||
*/
|
||||
public int getSerialNumber() {
|
||||
return Dispatch.get(myDrive, "SerialNumber").getInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method.
|
||||
* We go through these formatting hoops so we can make the size string pretty.
|
||||
* We wouldn't have to do that if we didn't mind long strings with Exxx at the end
|
||||
* or the fact that the value returned can vary in size based on the size of the disk.
|
||||
* @return driver total size of the disk
|
||||
*/
|
||||
public String getTotalSize() {
|
||||
Variant returnValue = Dispatch.get(myDrive, "TotalSize");
|
||||
if (returnValue.getvt() == Variant.VariantDouble){
|
||||
return sizeFormatter.format(returnValue.getDouble());
|
||||
} else if (returnValue.getvt() == Variant.VariantInt){
|
||||
return sizeFormatter.format(returnValue.getInt());
|
||||
} else {
|
||||
return "Don't know type: "+returnValue.getvt();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method.
|
||||
* We wouldn't have to do that if we didn't mind long strings with Exxx at the end
|
||||
* or the fact that the value returned can vary in size based on the size of the disk.
|
||||
* @return driver free size of the disk
|
||||
*/
|
||||
public String getFreeSpace() {
|
||||
Variant returnValue = Dispatch.get(myDrive, "FreeSpace");
|
||||
if (returnValue.getvt() == Variant.VariantDouble){
|
||||
return sizeFormatter.format(returnValue.getDouble());
|
||||
} else if (returnValue.getvt() == Variant.VariantInt){
|
||||
return sizeFormatter.format(returnValue.getInt());
|
||||
} else {
|
||||
return "Don't know type: "+returnValue.getvt();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return file system on the drive
|
||||
*/
|
||||
public String getFileSystemType() {
|
||||
//figure ot the actual variant type
|
||||
//Variant returnValue = Dispatch.get(myDrive, "FileSystem");
|
||||
//System.out.println(returnValue.getvt());
|
||||
return Dispatch.get(myDrive, "FileSystem").getString();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return volume name
|
||||
*/
|
||||
public String getVolumeName() {
|
||||
return Dispatch.get(myDrive, "VolumeName").getString();
|
||||
}
|
||||
/**
|
||||
* Simple main program that creates a DiskUtils object and queries for the C: drive
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
//DiskUtils utilConnection = new DiskUtils("F");
|
||||
DiskUtils utilConnection = new DiskUtils("C");
|
||||
System.out.println("Disk serial number is: "+ utilConnection.getSerialNumber());
|
||||
System.out.println("FileSystem is: "+ utilConnection.getFileSystemType());
|
||||
System.out.println("Volume Name is: "+ utilConnection.getVolumeName());
|
||||
System.out.println("Disk total size is: "+ utilConnection.getTotalSize());
|
||||
System.out.println("Disk free space is: "+ utilConnection.getFreeSpace());
|
||||
utilConnection.tearDown();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user