Vincent

          Vicent's blog
          隨筆 - 74, 文章 - 0, 評論 - 5, 引用 - 0
          數據加載中……

          J2SE5.0新特性之ProcessBuilder

          這個例子使用了J2SE5.0的ProcessBuilder類執行外部的程序,相對于?Runtime.exec?,它更方便,可以設置環境變量等。這里使用它在windows下讀取物理網卡的地址

          1. package?com.kuaff.jdk5package;

          2. import?java.io.IOException;
          3. import?java.io.InputStream;
          4. import?java.util.ArrayList;
          5. import?java.util.List;

          6. public?class?ProcessBuilderShow
          7. {
          8. ????public?static?List<String>?getPhysicalAddress()
          9. ????{
          10. ????????Process?p?=?null;
          11. ????????//物理網卡列表
          12. ????????List<String>?address?=?new?ArrayList<String>();

          13. ????????try
          14. ????????{
          15. ????????????//執行ipconfig?/all命令
          16. ????????????p?=?new?ProcessBuilder("ipconfig",?"/all").start();
          17. ???????? }
          18. ????????catch?(IOException?e)
          19. ????????{
          20. ????????????return??address;
          21. ???????? }
          22. ????????byte[]?b?=?new?byte[1024];
          23. ????????StringBuffer?sb?=?new?StringBuffer();
          24. ????????//讀取進程輸出值
          25. ????????InputStream?in?=?p.getInputStream();
          26. ????????try
          27. ????????{
          28. ????????????while?(in.read(b)>0)
          29. ????????????{
          30. ????????????????sb.append(new?String(b));
          31. ???????????? }
          32. ???????? }
          33. ????????catch?(IOException?e1)
          34. ????????{
          35. ???????? }
          36. ????????finally
          37. ????????{
          38. ????????????try
          39. ????????????{
          40. ????????????????in.close();
          41. ???????????? }
          42. ????????????catch?(IOException?e2)
          43. ????????????{
          44. ???????????? }
          45. ???????? }
          46. ????????//以下分析輸出值,得到物理網卡
          47. ????????String?rtValue?=?sb.substring(0);
          48. ????????int?i?=?rtValue.indexOf("Physical?Address.?.?.?.?.?.?.?.?.?:");
          49. ????????while(i>0)
          50. ????????{
          51. ????????????rtValue?=?rtValue.substring(i?+?"Physical?Address.?.?.?.?.?.?.?.?.?:".length());
          52. ????????????address.add(rtValue.substring(0,18));
          53. ????????????i?=?rtValue.indexOf("Physical?Address.?.?.?.?.?.?.?.?.?:");
          54. ???????? }
          55. ????????
          56. ????????return?address;
          57. ????????
          58. ???? }
          59. ????public?static?void?main(String[]?args)
          60. ????{
          61. ????????List<String>?address?=?ProcessBuilderShow.getPhysicalAddress();
          62. ????????for(String?add:address)
          63. ????????{
          64. ????????????System.out.printf("物理網卡地址:%s%n",?add);
          65. ???????? }
          66. ???? }
          67. }

          posted on 2006-08-22 10:45 Binary 閱讀(125) 評論(0)  編輯  收藏 所屬分類: j2se

          主站蜘蛛池模板: 夏邑县| 汾阳市| 洪泽县| 治多县| 八宿县| 香港| 开封县| 桂林市| 龙游县| 河北区| 平原县| 东港市| 沐川县| 乾安县| 岳阳市| 梨树县| 攀枝花市| 平陆县| 石渠县| 图木舒克市| 武夷山市| 雅江县| 湘西| 准格尔旗| 修文县| 桑日县| 前郭尔| 昌平区| 海安县| 沈丘县| 广东省| 巢湖市| 保靖县| 高州市| 阳春市| 特克斯县| 景谷| 屏东市| 莎车县| 长顺县| 潜山县|