Java访问操作系统资源

 

这类问题常常会被人问题, 如何用Java实现下面的功能?

 

1. 需要做一个应用模块, 用来监控CPU的占有率.

 

2. 想获得磁盘空间的大小.

 

3. 当前系统连接请求

 

4. 系统进程状态

 

5. 写一个Java程序, 后台运行, 产生类似金山词霸的鼠标抓取单词功能

 

...

 

上述问题的共同点是: 涉及到底层资源, 如CPU, 磁盘空间, 请求状态, 进程状态, 对于底层资源而言, 根据操作系统不同, 会存在不同的描述, 而Java作为一个跨平台的语言, 不会提供直接面对这些底层资源的操作(当然它可以实现, 如文件访问), 为了更好的跨平台, Java并没有为这些资源的访问, 提供API.

 

那么如何获得底层资源[1~4]所描述的问题, 获取其它进程的状态[第五个问题]呢?

 

对Java而言, 可以通过两种方式实现:

 

1. JNI, 可以解决问题5, 实质是通过Java启动一个后台服务, 这个服务能获取当前的鼠标靠近的单词. 本质实质就是一个平台相关的C程序.

2. 调用命令行接口, 从标准输入输出流中得到返回结果, 然后对这个数据流进行分析即可, 具体做法如下:



然后便可以得到需要的内容了, 比如系统的资源可以用systeminfo命令获取.分析文本可以采用正则表达式, 也容易搞定这个问题。

 

Java对跨进程的处理, 往往非常弱小, 进程之间的交互能力不强。 弱小的原因就是跨平台带来的牺牲, 如果跨平台需要解决操作系统的底层问题, 用Java的优势会明显减弱。 如果带来更大的问题, 建议放弃Java, 采用本地代码实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值