使用java查看磁盘空间大小


所属类别:JavaScripts

文章作者:佚名

特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!


下面是一个win下的例子,编译成功之后,运行java Diskspace yourdir(比如c:\)import java.io.BufferedReader;import java.io.InputStreamReader;/*** Determine free disk space for a given directory by* parsing the output of the dir command.* This class is inspired by the code at* Works only under Windows under certain circumstances.* Yes, it's that shaky.* Requires Java 1.4 or higher.* @[EMAIL PROTECTED]*Marco Schmidt*/public class Diskspace{ private Diskspace() {

// prevent instantiation of this class }/*** Return available free disk space for a directory.* @[EMAIL PROTECTED]dirName name of the directory* @[EMAIL PROTECTED]free disk space in bytes or -1 if unknown*/ public static long getFreeDiskSpace(String dirName) {

try

{

 // guess correct 'dir' command by looking at the

 // operating system name

 String os = System.getProperty("os.name");

 String command;

 if (os.equals("Windows NT") os.equals("Windows 2000"))

 {

command = "cmd.exe /c dir " + dirName;

 }

 else

 {

command = "command.com /c dir " + dirName;

 }

 // run the dir command on the argument directory name

 Runtime runtime = Runtime.getRuntime();

 Process process = null;

 process = runtime.exec(command);

 if (process == null)

 {

return -1;

 }

 // read the output of the dir command

 // only the last line is of interest

 BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

 String line;

 String freeSpace = null;

 while ((line = in.readLine()) != null)

 {

freeSpace = line;

 }

 if (freeSpace == null)

 {

return -1;

 }

 process.destroy();

 // remove dots & commas & leading and trailing whitespace

 freeSpace = freeSpace.trim();

 freeSpace = freeSpace.replaceAll("\\.", "");

 freeSpace = freeSpace.replaceAll(",", "");

 String[] items = freeSpace.split(" ");

 // the first valid numeric value in items after(!) index 0

 // is probably the free disk space

 int index = 1;

 while (index < items.length)

 {

try

{

 long bytes = Long.parseLong(items[index++]);

 return bytes;

}

catch (NumberFormatException nfe)

{

}

 }

 return -1;

}

catch (Exception exception)

{

return -1;

} }/*** Command line program to print the free diskspace to stdout* for all 26 potential root directories A:\ to Z:\* (when no parameters are given to this program)* or for those directories (drives) specified as parameters.* @[EMAIL PROTECTED]args program parameters*/

public static void main(String[] args) {

if (args.length == 0)

{

 for (char c = 'A'; c <= 'Z'; c++)

 {

String dirName = c + ":\\";

System.out.println(dirName + " " +

getFreeDiskSpace(dirName));

 }

}

else

{

 for (int i = 0; i < args.length; i++)

 {

System.out.println(args[i] + " " + getFreeDiskSpace(args[i]));

 }

} }}

方法二:使用Jconfig,可以跨平台

从http://www.tolstoy.com/samizdat/jconfig.html上下载jconfig。

下载的包的sample里有很简单的例子,如果是要得到磁盘空间的话:

用FileRegistry.getVolumes()得到DiskVolume。

然后call getFreeSpace()和getMaxCapacity()。

就是这么简单。

方法三:jni

这个是解决所有和os相关的操作的万能利器了。

例子我也懒得写了。

写一个dll然后call之即可。关闭本页

相关信息

· Mail Notification:又一个邮件通知程序

·  关于Servlet中的事件监听

· 基于Tomcat5.0和Axis2开发Web Service应用实例

· jboss 下MySql DataSource EJB 部署问题








....

90676 1417