获取Linux/Unix文件系统信息

 设计一套SAP监控系统

http://blog.csdn.net/bayaci/archive/2009/10/13/4666456.aspx

显示系统df(linux )/ bdf (hpunix)的信息


执行代码,获取诸如 bdf /usr命令后的信息:
DiskInfo diskInfo = new DiskInfo();
diskInfo.info(directory);
long used = diskInfo.getUsed();
long free = diskInfo.getAvailable();
long kbyte = diskInfo.getKbyte();






代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.StringTokenizer;
 
 
public class DiskInfo {

   /** OS line separator. */
     static final String NL = System.getProperty( "line.separator" );

   private static long getLong( String value ) throws NumberFormatException {
       try {
           return Long.parseLong( value );
       }
       catch( NumberFormatException nfe ) {
           throw new NumberFormatException( "On value "+value+": "+nfe.getMessage() );
       }
   }


   private String fileSystem ;
   private String mounted ;
private  long used = 0L;
private long kbyte = 0L;
private long available = 0L;

   public   void info(String directory  ) throws IOException {

      InputStream stream = null;
     // Connection connection = null; // Database Connection Object

 

 
         // to handle standard outputs
         final byte[] buf = new byte[1024];
         String[] strings;
         int i;
         int size;

 
         // note OS name
         final String osName = System.getProperty( "os.name" );

        // System.out.println( "system is  " + osName);
        
        
         if( "Linux".equals( osName ) ) {
            final Process p = Runtime.getRuntime().exec( "df " + directory );
            stream = p.getInputStream();
            final int count = stream.read( buf, 0, buf.length );

            String delim = NL;

            final StringTokenizer st = new StringTokenizer( new String( buf, 0, count ), delim,
true );

            int lineNum = 1;
            int field = 0;

            while( st.hasMoreTokens() ) {
                final String token = st.nextToken(delim);
                //System.out.println( "token is  " + token);
                if( lineNum < 2 ) {
                    if( NL.equals( token ) ) {
                        lineNum++;
                        if( lineNum == 2 ) {
                            delim = " " + NL;
                        }
                    }
                }// else
                if( !" ".equals( token ) ) {
                    field++;
                    if( field == 0 ) {
                        setFileSystem (   token  );
                    } else
                    if( field == 2 ) {
                        setUsed ( getLong( token ));
                    } else
                    if( field == 3 ) {
                        setAvailable( getLong( token ));
                    }
                }
            }
         }
         else
         if( "HP-UX".equals( osName ) ) {
            final Process p = Runtime.getRuntime().exec( "bdf " + directory );
            stream = p.getInputStream();
            final int count = stream.read( buf, 0, buf.length );

            String delim = NL;

            final StringTokenizer st = new StringTokenizer( new String( buf, 0, count ), delim,
true );

            int lineNum = 1;
            int field = 0;

            while( st.hasMoreTokens() ) {
                final String token = st.nextToken(delim);
                if( lineNum < 2 ) {
                    if( NL.equals( token ) ) {
                        lineNum++;
                        if( lineNum == 2 ) {
                            delim = " " + NL;
                        }
                    }
                } else
                if( !" ".equals( token ) ) {
                    field++;
                    
                   
                   
                    if( field == 0 ) {
                        setFileSystem (   token  );
                    } else
                    if( field == 3 ) {
                        setUsed ( getLong( token ));
                    } else
                    if( field == 4 ) {
                        setAvailable( getLong( token ));
                    }
                }
            }
         } else {
            throw new RuntimeException( "Unknown OS name: " + osName + " to implement..." );
         }
 
         setKbyte ( getUsed() + getAvailable());
         setMounted(directory );
 
 
   }

   private void setUsed(long used) {
    this.used = used;
}

public long getUsed() {
    return used;
}

private void setKbyte(long kbyte) {
    this.kbyte = kbyte;
}

public long getKbyte() {
    return kbyte;
}

private void setAvailable(long available) {
    this.available = available;
}

public long getAvailable() {
    return available;
}

private void setFileSystem(String fileSystem) {
    this.fileSystem = fileSystem;
}

public String getFileSystem() {
    return fileSystem;
}

private void setMounted(String mounted) {
    this.mounted = mounted;
}

public String getMounted() {
    return mounted;
}

 
 
  
  
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值