Java如何基于ProcessBuilder类调用外部程序

x33g5p2x  于2022-05-23 转载在 Java  
字(2.1k)|赞(0)|评价(0)|浏览(410)

Java如何基于ProcessBuilder类调用外部程序

  1. demo1
  1. @Test
  2. public void testProcessBuilder() {
  3. ProcessBuilder processBuilder = new ProcessBuilder();
  4. // processBuilder.command("ping","127.0.0.1");
  5. processBuilder.command("ipconfig");
  6. //将标准输入流和错误输入流合并,通过标准输入流读取信息
  7. processBuilder.redirectErrorStream(true);
  8. try {
  9. //启动进程
  10. Process start = processBuilder.start();
  11. //获取输入流
  12. InputStream inputStream = start.getInputStream();
  13. //转成字符输入流
  14. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");
  15. int len = -1;
  16. char[] c = new char[1024];
  17. StringBuffer outputString = new StringBuffer();
  18. //读取进程输入流中的内容
  19. while ((len = inputStreamReader.read(c)) != -1) {
  20. String s = new String(c, 0, len);
  21. outputString.append(s);
  22. System.out.print(s);
  23. }
  24. inputStream.close();
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. }

  1. demo02
  1. @Test
  2. public void testFFmpeg() {
  3. ProcessBuilder processBuilder = new ProcessBuilder();
  4. //定义命令内容
  5. List<String> command = new ArrayList<>();
  6. command.add("D:/program/ffmpeg-20191229-e20c6d9-win64-static/bin/ffmpeg.exe");
  7. command.add("-i");
  8. command.add("D:/test/video/1.avi");
  9. command.add("-y");//覆盖输出文件
  10. command.add("-c:v");
  11. command.add("libx264");
  12. command.add("-s");
  13. command.add("1280x720");
  14. command.add("-pix_fmt");
  15. command.add("yuv420p");
  16. command.add("-b:a");
  17. command.add("63k");
  18. command.add("-b:v");
  19. command.add("753k");
  20. command.add("-r");
  21. command.add("18");
  22. command.add("D:/test/video/1.mp4");
  23. processBuilder.command(command);
  24. //将标准输入流和错误输入流合并,通过标准输入流读取信息
  25. processBuilder.redirectErrorStream(true);
  26. try {
  27. //启动进程
  28. Process start = processBuilder.start();
  29. //获取输入流
  30. InputStream inputStream = start.getInputStream();
  31. //转成字符输入流
  32. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");
  33. int len = -1;
  34. char[] c = new char[1024];
  35. StringBuffer outputString = new StringBuffer();
  36. //读取进程输入流中的内容
  37. while ((len = inputStreamReader.read(c)) != -1) {
  38. String s = new String(c, 0, len);
  39. outputString.append(s);
  40. System.out.print(s);
  41. }
  42. inputStream.close();
  43. } catch (IOException e) {
  44. e.printStackTrace();
  45. }
  46. }

相关文章

最新文章

更多