我正在尝试在程序生成的SVG字符串上运行SVGO。 SVGO与npm install -g svgo
一起全局安装,通常可以在命令行上运行,如下所示:
cat image.svg | svgo -i - -o - > image-opt.svg
我正在使用标准输入和输出。 Java中的等效项是:
Process process = new ProcessBuilder("svgo", "-i -", "-o -").start();
BufferedReader stdout = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedWriter stdin = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
stdin.write("<svg>...</svg>");
stdin.flush();
Scanner scanner = new Scanner(stdout);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
我收到一个java.io.IOException: The pipe is being closed
错误。如果不刷新,则不会输出,stdout.readLine()
返回null。
svgo.cmd
文件是位于%APPDATA%/npm
中的脚本,由npm生成。
如何使用Java中的节点模块?