前面写了个JS版,这里记录个java版本的,思路跟先前那个差不多,这里就不多说了。所不同的是:那个是客户端的,这里是在服务器端,而且了除了用ajax循环扫描之后,还添加了java中的循环扫描。
1、前台展示:
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="ztb_l" id="upanTable">
<tr>
<td>盘符路径(Path)</td>
<td>驱动器类型(DriveType)</td>
<td>卷标名(VolumeName)</td>
<td>可用容量大小(AvailableSpace)</td>
<td>总空间容量大小(TotalSize)</td>
</tr>
</table>
</body>
2、工具类:
a、USB实体类:
public class Usb implements Serializable {
private static final long serialVersionUID = -3413919743044797833L;
private String pathName;//路径名称,如D:\
private String diskName;//盘符名称,如软件 (D:)
private String diskType;//盘符类型,如本地磁盘
private int flag;//标识 0-本地磁盘 1-可移动磁盘
private double usableSize;//可用空间
private double totalSize;//总空间
//get/set方法
}
b、获取磁盘信息工具类:
public class DiskUtil {
private final static String localDiskName = "本地磁盘";
private final static String removableDiskName = "可移动磁盘";
private final static String enLocalDiskName = "Local Disk";
private final static String enRemovableDiskName = "Removable Disk";
/**
* 该方法用来获取磁盘信息
* @param flag:获取的磁盘类型信息:1-获取所有磁盘信息及数量 2-获取本地磁盘信息和数量 3-获取可移动磁盘信息和数量
* @param flag2:磁盘容量显示方式:1-GB 2-MB 3-KB 4-B 默认为GB
* @return list<Usb>:返回磁盘基本信息集合
* */
public List<Usb> getUdiskInfo(int flag,int flag2) {
List<Usb> diskList = new ArrayList<Usb>();
FileSystemView fileSystemView = FileSystemView.getFileSystemView();// 获取FileSystemView对象
double unit = getDiskUnit(flag2);//将磁盘格式化为GB
Usb usb = null;
File[] roots = File.listRoots();
String diskType="";
long usableSpace=0;
long totalSpace=0;
try{
for (File file : roots) {
diskType="";
usableSpace=0;
totalSpace=0;
diskType= fileSystemView.getSystemTypeDescription(file);// 获取磁盘的类型描述信息
//System.out.println("磁盘类型:"+diskType);
// 当磁盘为本地磁盘时
if(diskType.startsWith(localDiskName)|| diskType.startsWith(enLocalDiskName)){
if(flag==3){//说明是要获取移动磁盘信息,而当前是本地磁盘信息,因此直接退出当前循环
continue;
}else{//获取全部或本地磁盘,直接创建对象并设置值