java中如何获得计算机的信息。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何获得计算机的信息。相关的知识,希望对你有一定的参考价值。

用java如何获得计算机的硬件信息?如网卡号,cup编号,硬盘编号,主板编号。等(然后写到指定的文件下,这个我会写)。
主要是获得硬件信息,最好有原码,如果没有给点提示也好。谢谢了,先给20分吧,如果问题解决了,再加分。
网卡号,cpu编号,硬盘编号,主板编号,这个可以获得吗?!!
它们对应的key是什么。就是说那个key对应网卡编号,那个key对应cpu编号?

参考技术A System.getProperties()
返回的是Properties
Properties 类表示了一个持久的属性集

以下的代码就可以把Properties的内容读出来

Properties props = new Properties();
try
InputStream in = new BufferedInputStream (new FileInputStream(filePath));
props.load(in);
Enumeration en = props.propertyNames();
while (en.hasMoreElements())
String key = (String) en.nextElement();
String Property = props.getProperty (key);
System.out.println(key+Property);

catch (Exception e)
e.printStackTrace();


对于补充的回答:
java不能直接得到楼主需要的信息,但是可以采用JNI,即调用C程序,让C得到这些信息本回答被提问者采纳
参考技术B IMonitorService接口:
public interface IMonitorService
public MonitorInfoBean getMonitorInfoBean() throws Exception;

MonitorInfoBean类:
/*采集系统存取数据JavaBean*/
public class MonitorInfoBean implements Comparable<MonitorInfoBean>
/** 操作系统. */
private String osName;
/** 总的物理内存. */
private float totalMemorySize;
/** 已使用的物理内存. */
private float usedMemory;
/** cpu使用率. */
private double cpuRatio;
/** 主机IP地址 */
private String mIpAddress;
/** 数据存储时间 */
private String dDateTime;
/**内存使用率*/
private float memoryRatio;

/**linux下Buffers内存*/
private float buffersMemory;

/**linux下Cached内存*/
private float cachedMemory;

public float getBuffersMemory()
return buffersMemory;

public float getCachedMemory()
return cachedMemory;

public String getDDateTime()
return dDateTime;

public void setDDateTime(String dateTime)
dDateTime = dateTime;

public String getMIpAddress()
return mIpAddress;

public void setMIpAddress(String ipAddress)
mIpAddress = ipAddress;

public String getOsName()
return osName;

public void setOsName(String osName)
this.osName = osName;

public float getTotalMemorySize()
return totalMemorySize;

public void setTotalMemorySize(float totalMemorySize)
this.totalMemorySize = totalMemorySize;

public float getUsedMemory()
return usedMemory;

public void setUsedMemory(long usedMemory)
this.usedMemory = usedMemory;

public double getCpuRatio()
return cpuRatio;

public void setCpuRatio(double cpuRatio)
this.cpuRatio = cpuRatio;

public int compareTo(MonitorInfoBean m)
String stra = this.getDDateTime();
String strb = m.getDDateTime();
Timestamp a = Timestamp.valueOf(stra);
Timestamp b = Timestamp.valueOf(strb);
if (a.before(b))
return -1;
else if (a.after(b))
return 1;
else
return 0;


public float getMemoryRatio()
return memoryRatio;

public void setMemoryRatio(float memoryRatio)
this.memoryRatio = memoryRatio;

public void setUsedMemory(float usedMemory)
this.usedMemory = usedMemory;

public void setBuffersMemory(float buffersMemory)
this.buffersMemory = buffersMemory;

public void setCachedMemory(float cachedMemory)
this.cachedMemory = cachedMemory;




import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.StringTokenizer;
import sun.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;

/*采集系统采集数据实现类*/
/**
* @author Administrator
*
*/

参考资料http://www.iteye.com/problems/71992

java中,想记录异常信息,该如何获得发生异常的类名和方法名呢?不要用log4j等。

StackTraceElement[] st = e.getStackTrace();
string exclass=st[0].getClassName();
这样不行,得到的不是发生异常的类,而是the name of the exception.
StackTraceElement[] st = e.getStackTrace();
string exclass=st[0].getClassName().toString();
这样不行,得到的不是发生异常的类,而是the name of the exception.

我觉得你写的是对的
StackTraceElement[] st = ex.getStackTrace();
for (StackTraceElement stackTraceElement : st)
String exclass = stackTraceElement.getClassName();
String method = stackTraceElement.getMethodName();
System.out.println(exclass);
System.out.println(method);


这个就是整个异常抛出的栈结构啊追问

谢谢啊,是我想错了。获取当前类名和方法名怎么获取?

追答


exclass这个就是当前类名

method就是当前异常处的方法名

比如
public static void getA()
try
throw new Exception();
catch (Exception ex)
StackTraceElement[] st = ex.getStackTrace();
for (StackTraceElement stackTraceElement : st)
String exclass = stackTraceElement.getClassName();
String method = stackTraceElement.getMethodName();
System.out.println(new Date() + ":" + "[类:" + exclass + "]调用"
+ method + "时在第" + stackTraceElement.getLineNumber()
+ "行代码处发生异常!异常类型:" + ex.getClass().getName());




调用后打印结果就是
Thu Sep 27 14:59:41 CST 2012:[类:AAA]调用getA时在第6行代码处发生异常!异常类型:java.lang.Exception
Thu Sep 27 14:59:41 CST 2012:[类:sss]调用main时在第4行代码处发生异常!异常类型:java.lang.Exception

追问

我写的运行出来不是这个结果啊。是不是跟我抛出的异常类型有关,我抛出的是SQLException,最后得到是类名和方法名都是sql上层的类和方法。

追答

应该不是 这个是个栈结构 你去取st[0]应该是最上层的位置吧,你需要取的是st[st.length-1]

参考技术A 楼主你问的这个问题很有水平啊 你要获得方法名和类名 建议你Debug跟踪一下 或者1楼写的那样看看什么异常 查查api 参考技术B 使用的st应该转换成String追问

谢谢,刚才我随便写的,没注意。但我要问的不是这个问题。

追答

try
//代码块
catch (Exception e)
System.out.println(e.getMessage());
这样就可以了

参考技术C try
//代码块

catch (Exception e)
System.out.println(e.getMessage());
//这样就可以捕获你的错误追问

是我没说明白么?我想获得发生异常的类名,方法名,并把他们单独存放在相应的变量里。

以上是关于java中如何获得计算机的信息。的主要内容,如果未能解决你的问题,请参考以下文章

java中知道两个日期如何获得两个日期之间的天数

Java如何取得计算机硬件信息么

如何折叠Scala迭代器并获得延迟计算的序列作为结果?

如何获得IP地址?

构建一个学生Student,根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。(代码

急求:java 如何获得线程运算的结果