java系统如何调用
Java 系统调用的实现方式
Java 通过 JNI(Java Native Interface)或直接使用 ProcessBuilder、Runtime.exec() 调用系统命令或外部程序。以下是具体方法:
使用 Runtime.exec()
Runtime.exec() 允许执行系统命令或外部程序。示例代码:

Process process = Runtime.getRuntime().exec("ls -l");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
process.waitFor();
使用 ProcessBuilder
ProcessBuilder 提供更灵活的参数控制和环境变量设置:
ProcessBuilder builder = new ProcessBuilder("ls", "-l");
builder.directory(new File("/path/to/dir"));
Process process = builder.start();
// 处理输出流同上
通过 JNI 调用本地代码
-
编写 Java 类声明 native 方法:

public class NativeExample { public native void callSystem(); static { System.loadLibrary("NativeExample"); } } -
生成头文件并实现 C/C++ 代码:
javac -h . NativeExample.java实现对应的 C 函数(如调用
system())。
注意事项
- 安全性:避免直接拼接用户输入到命令中,防止命令注入。
- 跨平台:不同系统的命令可能不同,需做兼容处理。
- 流处理:及时消费进程的输出/错误流,避免阻塞。
实际应用场景
- 执行脚本或批处理文件。
- 调用系统工具(如压缩、文件操作)。
- 集成非 Java 实现的底层功能。
以上方法可根据需求选择,简单命令推荐 ProcessBuilder,复杂功能建议通过 JNI 实现。






