Java程序去调用并执行shell脚本及问题总结(推荐)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Java程序调用并执行shell脚本及问题总结 Java程序调用并执行shell脚本是Java开发中非常重要的一部分,特别是在文本处理过程中。Java开发的特点是可以很早地进行TDDL,METAQ等等的对接,而脚本开发的特点是可以在进行批处理的时候非常方便。 在实际开发中,我们可能会遇到一些问题,例如,如何将抓取的数据进行打包,如何通过脚本进行抓取,如何解决java调用shell脚本时的权限问题等等。 本文将详细介绍Java程序如何调用并执行shell脚本,并总结了一些常见的问题解决方法。 一、 Java调用shell脚本的方法 Java可以通过ProcessBuilder或Runtime的方式来调用shell脚本。 ProcessBuilder是一种比较直观的方法,参数的设置也比较方便。例如: ```java ProcessBuilder pb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, param1, param2, param3); pb.directory(new File(SHELL_FILE_DIR)); int runningStatus = 0; String s = null; try { Process p = pb.start(); try { runningStatus = p.waitFor(); } catch (InterruptedException e) { } } catch (IOException e) { } if (runningStatus != 0) { } return; ``` 而Runtime的方式比较暴力,也比较常用: ```java p = Runtime.getRuntime().exec(SHELL_FILE_DIR + RUNNING_SHELL_FILE + " "+param1+" "+param2+" "+param3); p.waitFor(); ``` 二、 可能存在的问题 1. 权限问题 在实际开发中,我们可能会遇到权限问题,例如,没权限运行shell脚本。这时,我们可以通过ProcessBuilder来授权: ```java ProcessBuilder builder = new ProcessBuilder("/bin/chmod", "755", tempFile.getPath()); Process process = builder.start(); int rc = process.waitFor(); ``` 2. 缓冲区溢出 在shell脚本中,如果有echo或者print输出,可能会导致缓冲区溢出。为了避免这种情况,需要把缓冲区读一下: ```java BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } ``` 三、总结 Java程序调用shell脚本是非常常见的需求,但是在实际开发中,我们可能会遇到一些问题。通过ProcessBuilder或Runtime的方式可以调用shell脚本,但需要注意权限问题和缓冲区溢出问题。通过本文,我们可以了解到Java程序如何调用并执行shell脚本,并解决一些常见的问题。
- fengshi0082022-10-28资源内容总结的很到位,内容详实,很受用,学到了~
- 粉丝: 5
- 资源: 909
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python中的算术运算符:掌握编程世界的数学语言.md
- 基于SpringBoot+Vue.JS前后端分离的宠物咖啡馆平台 源码+数据库+论文(毕业设计)
- Python中的变量:作用域与生命周期揭秘.md
- 基于SpringBoot+Vue.JS前后端分离的旅游管理系统 源码+数据库+论文(毕业设计)
- 基于SpringBoot+Vue.JS前后端分离的医院管理系统 源码+数据库+论文(毕业设计)
- 基于SpringBoot+Vue.JS前后端分离的周边产品销售网站 源码+数据库+论文(毕业设计)
- 基于SpringBoot+Vue.JS前后端分离的微服务在线教育系统 源码+数据库+论文(毕业设计)
- 基于SpringBoot+Vue.JS前后端分离的校园资料分享平台 源码+数据库+论文(毕业设计)
- 基于SpringBoot+Vue.JS前后端分离的大学生就业招聘系统 源码+数据库+论文(毕业设计)
- 基于stm32使用ucgui+GUIBuilder开发ui实例源码