我有一个在Linux机器上运行的Java代码。 代码运行时,它会从Internet下载某些文件。那些'.Z'文件,所以我试图使用'7z'程序来提取数据。
当尝试手动提取它时,一切正常,数据('。clk'文件,基本上是一个可以用记事本打开的文本文件)被完美地提取出来并且所有数据都是完整的。但是当我使用java代码自动运行它时,我收到一条错误消息并且提取的文件未满,似乎提取停在中间。
对于手动提取,我使用以下命令:
7z e filename.clk.Z -o/some/path/to/extract -aoa
从Java运行时我使用这种方法:
public static void extractFile_linux(String inputFile, String outputDirectory) {
try {
new ProcessBuilder("7z", "e", inputFile, "-o" + outputDirectory, "-aoa").start();
} catch (IOException ex) {ex.printStackTrace();}
}
错误消息是:
Scanning the drive for archives:
1 file, 1050440 bytes (1026 KiB)
Extracting archive: /some/path/to/extract/igr19881.clk.Z
--
Path = /some/path/to/extract/igr19881.clk.Z
Type = Z
ERROR: Data Error : igr19881.clk
Sub items Errors: 1
Archives with Errors: 1
Sub items Errors: 1
这是手动命令的输出:
Scanning the drive for archives:
1 file, 1050462 bytes (1026 KiB)
Extracting archive: /some/path/to/extract/igr19881.clk.Z
--
Path = /some/path/to/extract/igr19881.clk.Z
Type = Z
Everything is Ok
Size: 4022169
Compressed: 1050462
这是什么问题? 为什么我无法从Java执行提取? 任何帮助,将不胜感激。谢谢。