当前位置: 首页 > wzjs >正文

上海雷蒙威手表网站免费发seo外链平台

上海雷蒙威手表网站,免费发seo外链平台,广告推广网站建设,wordpress 添加www目录 一.添加Jython依赖 二.使用步骤 1. 创建 ProcessBuilder 实例 2. 设置工作目录(可选) 3. 合并错误流(可选) 4. 启动进程 5. 处理输入输出流 6. 等待进程完成 7.完整案例 三.注意事项 ProcessBuilder是jdk提供的脚本…

目录

一.添加Jython依赖

二.使用步骤

1. 创建 ProcessBuilder 实例

2. 设置工作目录(可选)

3. 合并错误流(可选)

4. 启动进程

5. 处理输入输出流

6. 等待进程完成

 7.完整案例

三.注意事项


ProcessBuilder是jdk提供的脚本执行工具类,无论是python文件还是shell脚本还是其他的指令,都可以通过此类来执行,我们来看看它是如何调用python脚本的。

ProcessBuilder 是 Java 提供的一个用于创建操作系统进程的类,它使得启动和管理外部进程变得更加简单和灵活。以下是一个详细的教程,帮助你理解如何在 Java 中使用 ProcessBuilder

一.添加Jython依赖

<dependency><groupId>org.python</groupId><artifactId>jython-standalone</artifactId><version>2.7.2</version> <!-- 确认版本号是最新的 -->
</dependency>

二.使用步骤

1. 创建 ProcessBuilder 实例

首先,你需要创建一个 ProcessBuilder 的实例,并指定要执行的命令及其参数。命令可以是一个简单的字符串数组,其中第一个元素是命令名称,后续元素是该命令的参数。

List<String> command = Arrays.asList("python3", "path/to/your_script.py", "arg1", "arg2");
ProcessBuilder processBuilder = new ProcessBuilder(command);
2. 设置工作目录(可选)

你可以为这个进程设置一个工作目录,如果未指定,默认的工作目录将是当前Java进程的工作目录。

processBuilder.directory(new File("/path/to/working/directory"));
3. 合并错误流(可选)

默认情况下,标准输出和标准错误是分开的。如果你希望将它们合并到一起处理,可以调用 redirectErrorStream(true) 方法。

processBuilder.redirectErrorStream(true);
4. 启动进程

通过调用 start() 方法来启动进程,并获得一个 Process 对象,你可以使用这个对象与新进程进行交互。

Process process = processBuilder.start();
5. 处理输入输出流

为了从子进程中获取输出或向子进程发送输入,你需要处理 Process 对象的标准输入、输出和错误流。

// 获取子进程的输出流
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF-8));
String line;
while ((line = reader.readLine()) != null) {System.out.println(line); // 或者做其他处理
}// 如果需要发送数据到子进程的标准输入
OutputStream out = process.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(out, StandardCharsets.UTF-8);
writer.write("Some input data\n");
writer.flush(); // 别忘了刷新输出流
6. 等待进程完成

最后,你可以等待子进程结束,并检查它的退出状态码。

try {int exitCode = process.waitFor();System.out.println("Exit Code: " + exitCode);
} catch (InterruptedException e) {e.printStackTrace();
}
 7.完整案例
	@PostMapping("/process")public String process(@RequestBody String param) throws Exception {// 获取python文件所在目录地址ProcessBuilder pb = new ProcessBuilder("python", "D:\\DevelopWork\\my-space\\java\\pep7chiao-demos\\exe-py-script\\src\\main\\resources\\script\\spider.py", param);// 解决中文乱码pb.environment().put("PYTHONIOENCODING", "utf-8");// 获取进程的输出流和错误流pb.redirectErrorStream(true);Process process = pb.start();// 读取Python脚本的输出BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String result = "";String line;while ((line = reader.readLine()) != null) {System.out.println(line);result += line;}BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));String errorResult;while ((errorResult = errorReader.readLine()) != null) {System.out.println(errorResult);}// 等待进程结束并检查退出状态int exitCode = process.waitFor();if (exitCode != 0) {throw new RuntimeException("python脚本执行失败:" + exitCode);}return result;}

三.注意事项

  • 字符编码:确保正确处理字符编码,特别是当你处理非ASCII字符时(如中文)。

  • 异常处理:对可能发生的异常进行适当的处理,以避免程序崩溃。

  • 资源管理:记得关闭所有打开的流(如 BufferedReaderOutputStreamWriter),以防止资源泄漏。

通过这些步骤,你应该能够轻松地在你的Java应用中使用 ProcessBuilder 来执行外部命令或脚本,并与之交互。

http://www.dtcms.com/wzjs/420496.html

相关文章:

  • 烟台北京网站建设长沙seo排名收费
  • 绛县苗木网网站是由谁建设的营销模式方案
  • 北方工业大学网站建设app广告联盟
  • 网站建设(中企动力)网销平台排名
  • 外包客服公司seo优化技巧有哪些
  • 防制网站怎么做凡科官网免费制作小程序
  • 建设银行网站上的的研究报告数据分析网
  • 苍南具城乡建设局网站seo整站优化
  • 网站商业授权含义网络推广方案范例
  • 毕业季网站如何做网页手机创建网站免费注册
  • 做网站找那些公司公众号开发
  • 怎么做导航网站互联网运营自学课程
  • 禅城网站建设费用网络推广渠道和方法
  • 如何上传网站源码青岛seo排名公司
  • 保亭县住房城市建设局网站如何建网站赚钱
  • 绍兴做网站价格网络推广渠道
  • 软件app制作整站优化包年
  • 视频弹幕网站怎么做的网站网址大全
  • 专门做瓷砖的网站广州seo成功案例
  • mt4网站建设济宁百度推广公司
  • 湖北省建设工程网站百度一下主页官网
  • 模板网站建设平台今天的最新新闻内容
  • ysl免费网站建设网络广告有哪些形式
  • nb-iot网站开发西安网站设计
  • 网站建设seo基本要求宁波网站推广方式
  • 怎么样做微网站培训方案及培训计划
  • wdcp wordpress forbidden 403网络营销的seo是做什么的
  • 做网站网页需要什么软件开发一个app平台大概需要多少钱?
  • 简单的网站有哪些湖南专业seo推广
  • 在县城做商城网站最佳磁力吧ciliba搜索引擎