簡體   English   中英

讀寫文件

[英]Read and write file bit by bit

例如,有一個.jpg文件或其他文件。 我想一點一點地閱讀它。 我這樣做:

open(FH, "<", "red.jpg") or die "Error: $!\n";
my $str;
while(<FH>) {
    $str .= unpack('B*', $_);
}
close FH;

好吧,它給了我$ str和0101001的文件。 之后,我這樣做:

open(AB, ">", "new.jpg") or die "Error: $!\n";
binmode(AB);
print AB $str;
close AB;

但這不起作用。

我該怎么做? 以及如何做到不管字節順序(跨平台)如何工作?

問題:

  1. 您在閱讀時也沒有使用binmode
  2. 逐行讀取二進制文件是沒有意義的,因為它們沒有一行。
  3. 您不必要在文件句柄中使用全局變量。
  4. 回答您問題的人:您沒有unpack

open(my $FH, "<", "red.jpg")
   or die("Can't open red.jpg: $!\n");
binmode($FH);
my $file; { local $/; $file = <$FH>; }
my $binary = unpack('B*', $file);

open(my $FH, ">", "new.jpg")
   or die("Can't create new.jpg: $!\n");
binmode($FH);
print $FH pack('B*', $binary);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM