java检测磁盘空间

package study.disk;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Locale;

/**
 * 检查磁盘空间是否可用的线程
 * djk
 *
 */
public class CheckDiskThread extends Thread
{

	/**
	 * 获得当前操作系统的名称
	 */
    private static String osName = System.getProperty("os.name").toUpperCase(Locale.getDefault());

    /**
     * 系统用户所在分区默认剩余空间
     */
    private static String diskAvail = "10240000";
    
    /**
     * 是否启动
     */
    private boolean runFlag = true;
	@Override
	public void run() 
	{
		if (!osName.startsWith("WINDOWS"))
        {
			while(runFlag)
			{
				

                BufferedReader breader = null;
                String diskInfo = null;
                String[] content = null;
                
                try
                {
                    sleep(1000);
                    
                    String command = "df " + "/home/djk";
                    
                    //执行查询磁盘空间命令
                    Process process = Runtime.getRuntime().exec(command);
                    
                    //获得执行命令的输入流
                    breader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                    
                    //过滤无用信息
                    breader.readLine();
                    
                    /**
                     * 离线文件目录磁盘分区信息
                     * 第一种情况:本地磁盘
                     * Filesystem           1K-blocks      Used Available Use% Mounted on
                     * /dev/sda2             20972152  18964652   2007500  91% /
                     * 
                     * 第二种情况:挂载磁盘
                     * Filesystem           1K-blocks      Used Available Use% Mounted on
                     * 10.70.136.21:/home/umlog
                     *                        41944384  17026880  24917504  41% /home/downbilldir
                     */
                    diskInfo = breader.readLine();
                    
                    if (null != diskInfo)
                    {
                        content = diskInfo.split("\\s+");
                        
                        //保证取到磁盘"可利用的"空间信息
                        while (null != content && content.length < 3)
                        {
                            diskInfo = breader.readLine();
                            if (null != diskInfo)
                            {
                                content = diskInfo.split("\\s+");
                            }
                        }
                    }
                }
                catch (InterruptedException e1)
                {
                	e1.printStackTrace();
                }
                catch (IOException e)
                {
                	e.printStackTrace();
                }
                finally
                {
                    if (null != breader)
                    {
                        try
                        {
                            breader.close();
                        }
                        catch (IOException e)
                        {
                        }
                    }
                }
                
                if (null != content && content.length >= 3)
                {
                    //设置实际的磁盘剩余空间大小
                    setDiskAvail(content[3]);
                }
            
			}
        }else
        {
        	System.out.println("not support windows os....");
        }
	}
	public static String getDiskAvail() {
		return diskAvail;
	}
	public static void setDiskAvail(String diskAvail) {
		CheckDiskThread.diskAvail = diskAvail;
	}
	
	

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值