Exiftool无法在ProcessBuilder中打印到文件吗?

时间:2018-07-17 03:36:40

标签: java ubuntu process java-8 exiftool

我正在使用ProcessBuilderexiftool的输出打印到文件中。我正在尝试在.opus文件exiftool Aero.opus > Aero.txt上运行此命令。这在终端上运行得很好,但是在processbuilder中,似乎无法解析它。

这是一个简单的程序。请注意,目录设置为/home/sarah,并且该目录中存在Aero.opus文件。

还请注意,输出将打印到控制台,而不是按预期的方式输出到文件,并且表示无法识别>运算符。

@Test
public void testExifprocess() throws IOException {
    //File Located at /home/sarah/Aero.opus
    ProcessBuilder builder = new ProcessBuilder("exiftool", "Aero.opus", ">", "Aero.txt").directory(Paths.get("/home/sarah").toFile())
            .inheritIO();
    builder.start();
}

这是输出:

Running com.protonmail.sarahszabo.stellaropusconverter.tests.StellarDiskManagerTest
File not found: >
File not found: Aero.txt
======== Aero.opus
ExifTool Version Number         : 10.80
File Name                       : Aero.opus
Directory                       : .
File Size                       : 13 MB
File Modification Date/Time     : 2018:06:29 19:19:08-04:00
File Access Date/Time           : 2018:07:16 23:20:27-04:00
File Inode Change Date/Time     : 2018:07:16 23:20:27-04:00
File Permissions                : rw-rw-r--
File Type                       : OPUS
File Type Extension             : opus
MIME Type                       : audio/ogg
Opus Version                    : 1
Audio Channels                  : 2
Sample Rate                     : 48000
Output Gain                     : 1
Vendor                          : Lavf58.17.100
Title                           : Aero
Artist                          : Daniel Deluxe
Picture Type                    : Front Cover
Picture MIME Type               : image/png
Picture Description             : Daniel Deluxe -- Aero.png
Picture Width                   : 1280
Picture Height                  : 720
Picture Bits Per Pixel          : 0
Picture Indexed Colors          : 0
Picture Length                  : 946992
Picture                         : (Binary data 946992 bytes, use -b     option to extract)
    1 image files read
    2 files could not be read

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

主文件夹: Home Folder

我的操作系统是Kubuntu 18.04,带有Java 8_171。

1 个答案:

答案 0 :(得分:2)

我认为它只是将“>”作为参数传递给exiftool。我建议你用  https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html#redirectOutput(java.io.File)

ProcessBuilder proc= new ProcessBuilder().command("exiftool", "Aero.opus");
proc.redirectErrorStream(true);
proc.redirectOutput(new File("Aero.txt"));
proc.start();