六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 36|回复: 0

获取磁盘(本地磁盘和移动磁盘)信息的Java代码

[复制链接]

升级  10%

15

主题

15

主题

15

主题

秀才

Rank: 2

积分
65
 楼主| 发表于 2013-2-3 14:37:21 | 显示全部楼层 |阅读模式
/**
*
*/
package com.duoguo.usb;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.filechooser.FileSystemView;
import org.apache.log4j.Logger;
import com.duoguo.Service.SocketServer;
import com.duoguo.Service.po.ReturnPo;
import com.duoguo.usb.po.UsbPo;
/**
* 磁盘检查 1、检测磁盘是本地磁盘还是可移动磁盘; 2、显示相应的磁盘名称,磁盘总空间以及可用的空间
*
* @author shyboy(897948924@qq.com)
*
*/
public class DiskTest {
private static Logger logger = Logger.getLogger(DiskTest.class);
private static final int methodId = 1;
private final static String localDiskName = "本地磁盘";
private final static String removableDiskName = "可移动磁盘";
private final static String enLocalDiskName = "Local Disk";
private final static String enRemovableDiskName = "Removable Disk";
/**
  * 获取磁盘信息
  *
  * @return Map<String,ReturnPo>
  */
public static Map<String, ReturnPo> getDiskInfo() {
  List<UsbPo> list = new ArrayList<UsbPo>();
  ReturnPo returnPo = new ReturnPo();
  Map<String, ReturnPo> map = new HashMap<String, ReturnPo>();
  FileSystemView fileSystemView = FileSystemView.getFileSystemView();// 获取FileSystemView对象
  double unit = 1024 * 1024 * 1024;
  File[] roots = File.listRoots();
  for (File file : roots) {
   UsbPo usbPo = new UsbPo();
   String pathName = file.getPath();// 获取磁盘的路径名称
   usbPo.setName(pathName);
   String diskName = fileSystemView.getSystemTypeDescription(file);// 获取磁盘的类型描述信息
   if (diskName.startsWith(localDiskName)
     || diskName.startsWith(enLocalDiskName))// 当磁盘为本地磁盘时
   {
    usbPo.setFlag(0);
   } else if (diskName.startsWith(removableDiskName)
     || diskName.startsWith(enRemovableDiskName))// 当磁盘为可移动磁盘时
   {
    usbPo.setFlag(1);
   }
   long usableSpace = file.getUsableSpace();// 获取磁盘的可用空间
   usbPo.setUsableSize(usableSpace / unit);
   long totalSpace = file.getTotalSpace();// 获取磁盘的总空间
   usbPo.setTotalSize(totalSpace / unit);
   System.out.println("磁盘名称为:" + diskName + pathName);
   System.out.println("总空间为:" + usbPo.getTotalSize() + "GB");
   System.out.println("可用空间为:" + usbPo.getUsableSize() + "GB");
   list.add(usbPo);
  }
  returnPo.setMethodId(methodId);
  returnPo.setExcept(null);
  returnPo.setResultFlag(true);
  returnPo.setResultInfo(list);
  logger.info(returnPo.getResultInfo());
  map.put(SocketServer.resultInfo, returnPo);
  return map;
}
/**
  * @param args
  */
public static void main(String[] args) {
  DiskTest.getDiskInfo();
}
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表