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

Performance 使用java计算可用磁盘空间和总磁盘空间,performance,jakarta-ee,rmi,java,Performance,Jakarta Ee,Rmi,Java,有人可以建议如何使用java代码从本地计算机计算具有给定ip(如(1.10.11.14))和窗口登录凭据(如(用户名:测试密码:测试))的Windows远程计算机的总磁盘空间和可用磁盘空间。下面的java代码非常有能力计算本地机器的总磁盘空间和可用磁盘空间,但查询是针对远程机器的 如何将下面的代码更改为计算远程计算机中C:drive的磁盘空间(1.10.11.14)。另外,如何将可用和已用磁盘存储值导入xls文件 import java.io.File; public class DiskSp

有人可以建议如何使用java代码从本地计算机计算具有给定ip(如
(1.10.11.14)
)和窗口登录凭据(如
(用户名:测试密码:测试)
)的Windows远程计算机的总磁盘空间和可用磁盘空间。下面的java代码非常有能力计算本地机器的总磁盘空间和可用磁盘空间,但查询是针对远程机器的

如何将下面的代码更改为计算远程计算机中C:drive的磁盘空间
(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");
    }
}

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

将驱动器作为远程文件夹装入 如果您可以(我不知道您是否可以或想要)将远程文件夹作为共享文件夹装载到Windows计算机上。如果这样做,您可以通过更改文件到已装入文件夹的路径来使用我们的代码。但这个解决方案可能不实用,也不是“Java”解决方案

在远程计算机上使用代理 Windows缺少像Linux的SSH这样的连接到机器的解决方案。因此,没有简单的方法连接到Windows计算机。有一些像IBM的STAF(请参阅)这样的工具可以解决这个问题。您可以在远程计算机和本地计算机上安装STAF,并可以通过它进行连接。但这是一个非常丑陋的解决方案,而且非常不安全。但是对于一个测试系统来说也许就足够了

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


我知道这不是你想听到的,但当你尝试连接到Windows计算机时,你会很不愉快…

**更新**-抱歉,从远程计算机误读,自动跳转到远程共享结论。。。但是,您可以在每台计算机上共享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>JavaRemoteShareSpace
==分区详细信息===
总空间:64315076608
总大小:64315076608字节
可用空间:22259978240字节
==兆字节===
总大小:61335 mb
可用空间:21228MB


这取决于您正在开发的环境。您需要权限来执行操作,例如读取远程磁盘的大小。如果您没有远程服务(例如完全共享并可从本地计算机访问的远程磁盘),则必须将代码放入删除java服务器,并使用本地计算机上的java客户机进行查询。