日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息

發(fā)布時(shí)間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

[java]代碼庫(kù)import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.util.Map;

/**

* 通過ProcessBuilder執(zhí)行本地命令。此類用于創(chuàng)建操作系統(tǒng)進(jìn)程。 獲取本機(jī)的ip配置信息

*

* 每個(gè)進(jìn)程生成器管理這些進(jìn)程屬性: (1)命令 是一個(gè)字符串列表,它表示要調(diào)用的外部程序文件及其參數(shù)(如果有) (2)環(huán)境 是從變量 到值

* 的依賴于系統(tǒng)的映射。初始值是當(dāng)前進(jìn)程環(huán)境的一個(gè)副本. (3)工作目錄。默認(rèn)值是當(dāng)前進(jìn)程的當(dāng)前工作目錄,通常根據(jù)系統(tǒng)屬性 user.dir 來命名.

* (4)redirectErrorStream 屬性。最初,此屬性為 false, 意思是子進(jìn)程的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出被發(fā)送給兩個(gè)獨(dú)立的流, 這些流可以通過

* Process.getInputStream() 和 Process.getErrorStream() 方法來訪問。 如果將值設(shè)置為

* true,標(biāo)準(zhǔn)錯(cuò)誤將與標(biāo)準(zhǔn)輸出合并。這使得關(guān)聯(lián)錯(cuò)誤消息和相應(yīng)的輸出變得更容易。 在此情況下,合并的數(shù)據(jù)可從

* Process.getInputStream() 返回的流讀取, 而從 Process.getErrorStream() 返回的流讀取將直接到達(dá)文件尾。

*/

public class UsingProcessBuilder {

/**

* 獲取Windows系統(tǒng)下的網(wǎng)卡的MAC地址

*

* @return

*/

public static String getPhysicalAddress() {

Process p = null;

try {

// 執(zhí)行ipconfig /all命令

p = new ProcessBuilder("ipconfig", "/all").start();

} catch (IOException e) {

return "";

}

byte[] b = new byte[1024];

int readbytes = -1;

StringBuffer sb = new StringBuffer();

// 讀取進(jìn)程輸出值

InputStream in = p.getInputStream();

try {

while ((readbytes = in.read(b)) != -1) {

sb.append(new String(b, 0, readbytes));

}

} catch (IOException e1) {

} finally {

try {

in.close();

} catch (IOException e2) {

}

}

return sb.toString();

}

/**

* 執(zhí)行自定義的一個(gè)命令,該命令放在C:/temp下,并且需要2個(gè)環(huán)境變量的支持。

*/

public static boolean executeMyCommand() {

// 創(chuàng)建系統(tǒng)進(jìn)程創(chuàng)建器

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");

// 獲得進(jìn)程的環(huán)境

Map env = pb.environment();

// 設(shè)置和去除環(huán)境變量

env.put("VAR1", "myValue");

env.remove("VAR0");

env.put("VAR2", env.get("VAR1") + ";");

// 切換工作目錄

pb.directory(new File("C:/temp"));

try {

// 得到進(jìn)程實(shí)例

Process p = pb.start();

// 等待該進(jìn)程執(zhí)行完畢

if (p.waitFor() != 0) {

// 如果進(jìn)程運(yùn)行結(jié)果不為0,表示進(jìn)程是錯(cuò)誤退出的

// 獲得進(jìn)程實(shí)例的錯(cuò)誤輸出

InputStream error = p.getErrorStream();

// do something

}

// 獲得進(jìn)程實(shí)例的標(biāo)準(zhǔn)輸出

InputStream sdin = p.getInputStream();

} catch (IOException e) {

} catch (InterruptedException e) {

}

return true;

}

public static void main(String[] args) {

String address = UsingProcessBuilder.getPhysicalAddress();

System.out.println(address);

}

}

總結(jié)

以上是生活随笔為你收集整理的java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。