■Windows版Perlの細道・けもの道

■ナビゲータ

[南北館(最初のメニュー)]

  1. [Windows版Perlの細道・けもの道]
    1. [1.準備編]
    2. [2.基本編]
    3. [3.応用編]
      1. [3-1.固定長データとCSVデータとの変換]
      2. [3-2.重複データの処理]
      3. [3-3.フォルダ内の一括処理]
      4. [3-4.1つのファイルを複数のファイルに分割する]
      5. [3-5.文字コードの変換]
      6. [3-6.半角全角変換]
      7. [3-7.多次元配列の処理]
      8. [3-9.その他]
        1. [3-9-1.文字列のフォーマットを変更する]
        2. [3-9-2.メッセージを表示する]
        3. [3-9-3.ファイルのサイズを取得する]
        4. [3-9-4.当日・前日・前営業日、前月末日・当月末日・翌月末日を取得する]
        5. [3-9-5.複数レコードを1レコードにまとめる]
        6. [3-9-6.電卓プログラム]
        7. [3-9-7.素因数分解]
    4. [スクリプトと入力データのサンプル]
rubyではどう処理する?
同じことをrubyではこうしています。

3.応用編

3-9.その他

3-9-3.ファイルのサイズを取得する

ファイルのサイズを取得するには、stat関数(または、lstat関数)を利用します。stat関数はファイルのサイズや作成日、更新日などの情報を取得するための関数ですが、Windowsではその中のファイルのサイズ以外の項目についてはほとんど利用できないと言っても過言ではありません。

stat関数は、ファイルハンドルまたはドライブからすべて指定したファイル名を引数とします。結果は13項目にセットされますが、そのうちファイルのサイズは8番目の項目となっています。したがって、指定方法としては、

    ファイルのサイズ = (stat ファイルハンドル)[7]   
    

とするか

    ファイルのサイズ = (stat "ファイル名")[7]   
    

とします。

stat関数とlstat関数の違いは、stat関数がグリニッジ標準時でファイルの作成日や更新日をセットするのに対し、lstat関数がそれぞれの地域(日本であれば日本の)標準時をセットすることだけです。

【スクリプト】
# size.pl
# 内容 : ファイルのサイズ(バイト数)等を取得する。
# Copyright (c) 2002-2011 Mitsuo Minagawa, All rights reserved.
# (minagawa@fb3.so-net.ne.jp)
# 使用方法 : c:\>perl size.pl
#
open(IN1,"input.txt");
open(OUT1,">output.txt");
# 
# 全項目を取得する場合
# 
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)    = stat IN1;
print   OUT1    "size1=$size\n";
# 
# ファイルのサイズだけを取得する場合(ファイルハンドルを引数とする場合)
# 
$size   = (stat IN1)[7];
print   OUT1    "size2=$size\n";
# 
# ファイルのサイズだけを取得する場合(ファイル名を引数とする場合)
# 
$size   = (stat "c:/Perl64/html/index.html")[7];
print   OUT1    "size3=$size\n";

close(IN1);
close(OUT1);
    
【スクリプトとデータのサンプル】

スクリプトはこちらにあります。

【出力データ】
size1=1337
size2=1337
size3=1288
    



Copyright (c) 2004-2013 Mitsuo Minagawa, All rights reserved.