Java 中如何知道 当前的操作系统是 32bit还是64bit, 等高手。

解决方案 »

  1.   

    查看系统信息可用下面语句:
    System.getProperties().list(System.out);
      

  2.   

    试一下这个:    System.out.println("操作系统位数:"+System.getProperty("sun.arch.data.model"));
      

  3.   

    楼上正解, 参考
    http://lopica.sourceforge.net/os.html
      

  4.   

    System.getProperty("sun.arch.data.model")-----------------------我觉得这个不能代表操作系统是否是 32bit 还是 64bit,它应该表示java平台无关的一个原因,以 32bit 为基准,无论在哪个操作系统下.以上是个人见解,如果不对的话,希望大家指出,谢谢.
      

  5.   

    可以采取C/java 结合的形式获取.OSBit.C 文件,生成 OSBit.exe
    原理:以指针存储的是地址线为根据.#include "stdio.h"int main(int argc, char* argv[])
    {
    printf("%d",8*sizeof(argv));
    return 0;
    }T.java 文件import java.io.*;public class T 
    {
    public static void main(String[] args) throws Exception
    {
    Process proc = Runtime.getRuntime().exec("OSBit.exe");

    proc.waitFor();
    BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));

    String str = in.readLine();
    System.out.println("当前操作系统是"+str.trim()+"位");
    }
    }将上面两文件放在同一目录下.运行
    F:\Enroll\OSBit\Debug>java T
    当前系统是32位F:\Enroll\OSBit\Debug>
      

  6.   

    觉得此君 yuzl32(Hello!有酒醉)解决方法很有意思~直接借鉴~:)
    试试先~
      

  7.   

    System.getProperty("sun.arch.data.model");
    这个我在问这个问题之前,就已经试过,不具有 可行性。
    我可以很明确的告诉你: 这个不行,在linux下甚至连这个变量都没有,这只是sun自己 规定的东西。
    To  
     回复人: yuzl32(Hello!有酒醉) 
    他的方法可行,但 不现实,自己写的程序没问题,商用不可能。顺便提醒 你一句:你的C代码 不用那么麻烦:sizeof(ulong);这个 就可以了。继续等...
      

  8.   

    还有阿   yuzl32(Hello!有酒醉)你的那个输入因该接受不了: 我写过一个能 得到外部输入和输出的调用外部程序的java模块,比你这个好用,不过有时候还是会有问题。呵呵,java对 底层的支持太差了,这会限制它的发展,真希望sun能 改进这一点。不过这样可能会牺牲 它的跨平台性,不过真正的java跨 平台性 更本不存在