使用java计算可用和总磁盘空间

时间:2014-05-06 12:41:36

标签: java performance java-ee rmi java-api

有人可以建议如何使用给定的ip (1.10.11.14)计算窗口远程计算机的总磁盘空间和可用磁盘空间,并使用java代码从我的本地计算机说明(username: test password : test)窗口登录凭据。下面的java代码非常强大,可以计算我本地计算机的总磁盘空间和可用磁盘空间,但远程计算机会出现查询。

如何将以下代码更改为计算远程计算机中C:驱动器的磁盘空间 (1.10.11.14)。另外,如何将空闲和已用磁盘存储值导入xls文件。

import java.io.File;

public class DiskSpacecalaculate
{
    public static void main(String[] args)
    {   
        File file = new File("c:");
        long usableSpace = file.getUsableSpace(); ///unallocated / free disk space in bytes.
        long freeSpace = file.getFreeSpace(); //unallocated / free disk space in bytes.

        System.out.println(" === Partition Detail ===");


        System.out.println("Total size : " + totalSpace + " bytes");
        System.out.println("Space free : " + freeSpace + " bytes");

        System.out.println(" === mega bytes ===");
        System.out.println("Total size : " + totalSpace /1024 /1024 + " mb");
        System.out.println("Space free : " + freeSpace /1024 /1024 + " mb");
    }
}

2 个答案:

答案 0 :(得分:0)

要计算远程计算机上的磁盘大小,您需要连接到远程计算机(显然)。困难的问题是如何建立这种联系。至于任何问题,都有一些不同的解决方案:

将驱动器安装为远程文件夹

如果可以(我不知道您是否可以)将远程文件夹作为共享文件夹安装在Windows计算机上。如果这样做,您可以通过将文件的路径更改为已安装的文件夹来使用我们的代码。但是这个解决方案可能是不合时宜的,而不是“Java"溶液

在远程计算机上使用代理

Windows缺乏像Linux和SSH这样的解决方案来连接到计算机。因此没有简单的方法来连接到Windows机器。有一些工具,如IBM的STAF(见here),可以解决这个问题。您可以在远程计算机和本地计算机上安装STAF,并可以通过它连接。但这是一个非常丑陋的解决方案,并且超级不安全。但对于一个测试系统来说可能就够了。

编写自己的服务

没有办法连接到Windows机器(如果我错了,请纠正我),像STAF这样的工具只是糟糕的解决方法。由于您还关注性能,我建议您只需将工具部署到Windows机器上,并在其上提供JSON-API。因此,您可以使用浏览器,转到机器并查看剩余的空间。

我知道这不是你想听的内容,但是当你尝试连接到Windows机器时,你将度过一段美好的时光......

答案 1 :(得分:0)

**更新** - 抱歉,从远程计算机上读取错误,自动跳转到远程共享结论...但是,您可以在每台计算机上共享C驱动器,并且只允许特殊帐户访问共享。否则,另一篇文章会提供您需要的各种建议。

您可以像使用java.io.File一样使用并定义路径。我不知道是否存在任何限制(我是从Windows主机运行此操作),但它有效。

import java.io.File;

public class RemoteShareSpace {
   public static void main(String[] args) {

  try{
     // Works either way...

     //File f = new File("\\\\myServer\\ShareDir1\\ShareDir2\\ShareDir3");
     File f = new File("//myServer/ShareDir1/ShareDir2/ShareDir3");

     long totalSpace  = f.getTotalSpace();
     long usableSpace = f.getUsableSpace(); // unallocated / free disk space in bytes.
     long freeSpace   = f.getFreeSpace();   // unallocated / free disk space in bytes.

     boolean pathExists = f.exists();

     // if path exists
     if(pathExists)
     {

         System.out.println(" === Partition Detail ===");
         System.out.println("Total Space: " + totalSpace);
         System.out.println("Total size : " + totalSpace + " bytes");
         System.out.println("Space free : " + freeSpace + " bytes");

         System.out.println(" === mega bytes ===");
         System.out.println("Total size : " + totalSpace /1024 /1024 + " mb");
         System.out.println("Space free : " + freeSpace /1024 /1024 + " mb");
     }
  }catch(Exception e){
     e.printStackTrace();
 }
}
}

输出:

  

C:\ Source> java RemoteShareSpace   
===分区细节===   
总空间:64315076608   
总大小:64315076608字节   
空间:22259978240字节   
===兆字节===   
总面积:61335 mb   
无空间:21228 mb