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