1
我幾乎tar.gz文件。在解包之前,我需要跳過一些字節,然後解壓縮,然後再進行修改並重新打包。爲什麼重寫二進制文件不起作用?
#!perl
open (my $src, "<", $path) or die $!;
binmode($src);
seek($src, $magicNumber,0);
open(my $tgz, ">", $path . ".tar.gz");
binmode($tgz);
#while(<$src>){
# print $tgz $_;
#}
my $n; my $data;
while(($n = read $src, $data, 4) != 0){
print $tgz $data;
}
爲什麼使用未註釋的版本會產生比未被佔用的(在中間跳過的字節)更短的文件。我會理解,如果文件結尾會損壞,但生成的文件在中間某處不同。對此有何解釋?
不幸的是,我不允許上傳重現問題的文件。
也許你正在編輯損壞存檔內gzip流的字節。什麼錯誤出現? –
亞歷克斯,我還沒有做任何事情。我只需要查找字節數並將其寫入另一個文件並嘗試使用存檔器打開它(僅用於測試)。 *評論while循環*結果與損壞的文件和* uncomented while循環*正常工作。 – teodozjan