yangyi 1 hafta önce
işleme
28568ce591

+ 39 - 0
.gitignore

@@ -0,0 +1,39 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 25 - 0
pom.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>space.anyi</groupId>
+    <artifactId>process-demo</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>1.4.14</version>
+        </dependency>
+    </dependencies>
+
+</project>

+ 10 - 0
process.md

@@ -0,0 +1,10 @@
+# JAVA Process使用教程
+1. 通过ProcessBuilder构建Process
+2. 获取Process的输入和输出
+   - 标准输入
+   - 标准输出
+   - 错误输出
+3. 获取Process执行的状态码
+4. Process的核心对象及对应API详解
+   - ProcessBuilder
+   - Process

+ 36 - 0
src/main/java/space/anyi/process/ProcessBuilderExample.java

@@ -0,0 +1,36 @@
+package space.anyi.process;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.Map;
+
+public class ProcessBuilderExample {
+    private final static Logger log = LoggerFactory.getLogger(ProcessBuilderExample.class);
+    public static void main(String[] args) {
+        getEnvironment();
+    }
+
+    /**
+     * 获取环境变量
+     */
+    private static void getEnvironment(){
+        List<String> cmd = List.of("");
+        ProcessBuilder processBuilder = new ProcessBuilder(cmd);
+        //获取所有系统环境变量
+        Map<String, String> environment = processBuilder.environment();
+        log.info("environment.size()={}",environment.size());
+        for (String key : environment.keySet()) {
+            log.info("key:{}<==>value:{}",key,environment.get(key));
+        }
+        /**
+         * 经测试上下两个Map的内容是一致的
+         */
+//        Map<String, String> systemEnv = System.getenv();
+//        log.info("systemEnv.size()={}",systemEnv.size());
+//        for (String key : systemEnv.keySet()) {
+//            log.info("{}<==>{}",key,systemEnv.get(key));
+//        }
+    }
+}

+ 28 - 0
src/main/java/space/anyi/process/QuickStart.java

@@ -0,0 +1,28 @@
+package space.anyi.process;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.List;
+
+public class QuickStart {
+    private final static Logger log = LoggerFactory.getLogger(QuickStart.class);
+    public static void main(String[] args) throws IOException, InterruptedException {
+        //1.ProcessBuilder构建Process
+        List<String> cmd = List.of("java", "--version");
+        Process process = new ProcessBuilder(cmd)
+                //启动Process
+                .start();
+        //2.获取Process标准输出到程序中
+        new BufferedReader(new InputStreamReader(process.getInputStream()))
+                .lines()
+                .forEach((line)->{log.info("标准输出:{}",line);});
+        //3.获取Process执行结果的状态码,0:表示正常退出;1:表示异常退出
+        int exitStatus = process.waitFor();
+//        int exitValue = process.exitValue();
+        log.info("退出状态码:{}",exitStatus);
+    }
+}