2011-04-01 48 views
14

如何使用Java獲取PC的RAM大小和硬盤大小?是否有可能通過Java獲取PC上當前記錄的用戶名?如何使用Java獲取Ram大小和硬盤大小?

+1

相關:http://stackoverflow.com/questions/25552/using-java-to-get-os-level-system-information – 2011-04-01 10:59:55

回答

21

磁盤大小:

long diskSize = new File("/").getTotalSpace(); 

用戶名:

String userName = System.getProperty("user.name"); 

我不知道的一種可靠的方法來確定的Java系統總內存。在Unix系統上,你可以解析/proc/meminfo。你當然可以找到可供JVM使用的最大內存:

long maxMemory = Runtime.getRuntime().maxMemory(); 

編輯:的完整性(感謝蘇雷什S),這裏有一種方式來獲得總內存只有在Oracle JVM:

long memorySize = ((com.sun.management.OperatingSystemMXBean) ManagementFactory 
     .getOperatingSystemMXBean()).getTotalPhysicalMemorySize(); 
+5

+1:順便說一句你可以設置'-Duser.name = AUser';) – 2011-04-01 11:07:41

+1

@Peter:啊是的,好點。 – WhiteFang34 2011-04-01 11:33:29

+0

我覺得對審計目的非常有用(即記錄誰做了什麼,例如我將它傳遞給RMI調用),但它不是很安全。 – 2011-04-01 11:37:14

2

看看this topic,它會詳細介紹如何獲取此類操作系統信息。

5

對於RAM大小,如果你正在使用的Java 1.5

java.lang.management包

com.sun.management.OperatingSystemMXBean mxbean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); 
System.out.println(mxbean.getTotalPhysicalMemorySize() + " Bytes "); 
+0

+1不知道這一點,但值得注意的是它特定於Oracle JVM。 – WhiteFang34 2011-04-01 11:32:14

4
import java.lang.management.*; 
import java.io.*; 

class max 
{ 
    public static void main(String... a) 
    { 
     long diskSize = new File("/").getTotalSpace(); 
     String userName = System.getProperty("user.name"); 
     long maxMemory = Runtime.getRuntime().maxMemory(); 
     long memorySize = ((com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean()).getTotalPhysicalMemorySize(); 
     System.out.println("Size of C:="+diskSize+" Bytes"); 
     System.out.println("User Name="+userName); 

     System.out.println("RAM Size="+memorySize+" Bytes"); 
    } 
}