| 
       
      
        
          
            | CGI 作成の初歩 | 
           
          
          
             
      
 
             
             | 
           
          
            | 18. ファイルの簡単な操作をする | 
           
          
             
              
            ファイルの最終更新日時などの情報を取得する 
             
            【書式】 
            $変数 = (stat("ファイル名"))[添字]; 
            @配列 = stat("ファイル名"); 
             
            stat関数で得られる最終更新日時も、現在の時刻を取得する の項で説明した time関数 のように 
            1970年1月1日0時0分0秒 から現在までの秒数が得られるようになっていますので、実際に表示 
            したりする際には、整形が必要となります。 
            stat関数で得られる情報は様々なものがあり、単一の情報が欲しい場合は書式にあるように添字 
            を指定して変数に入れ使用しますが、複数の情報を使いたい場合は、そのまま配列に入れてしまい 
            、後でその配列に添字を指定して使用する方法もあります。 
             
             
            下のサンプルソースでは、ファイルサイズと、最終更新日時、最終アクセス日時を表示します。 
            最終更新日時と、最終アクセス日時はサブルーチンを利用して変換を行ってみます。 
            複数の値を使いたい為、 stat関数からの戻りを配列に入れていますが、単一の要素のみ取り出す 
            場合はstat取得時の書式を変え、戻りをスカラー変数に入れてもかまいません。 
             
             
            
| 実行結果 | 
                 
ファイルの最終更新日時は 2004/09/21(TUE) 16:27 
                   ファイルの最終アクセス日時は 2004/09/21(TUE) 
18:41 
                   ファイルサイズは 100バイトです。  | 
                 
              
             
             
             
              
            stat関数呼び出し時の添字、もしくは取得したデータを配列に 
            入れた場合に得たいデータと指定する添字は以下の通りです。 
            
              
                
                  | 0 | 
                  デバイス番号 | 
                 
                
                  | 1 | 
                  iノード番号 | 
                 
                
                  | 2 | 
                  モード (タイプとパーミッションの値) | 
                 
                
                  | 3 | 
                  対象ファイルのリンク数 | 
                 
                
                  | 4 | 
                  対象ファイルの所有者ID | 
                 
                
                  | 5 | 
                  対象ファイルのグループID | 
                 
                
                  | 6 | 
                  デバイス識別子 | 
                 
                
                  | 7 | 
                  ファイルのサイズ (単位はバイト) | 
                 
                
                  | 8 | 
                  ファイルの最終アクセス日時 | 
                 
                
                  | 9 | 
                  ファイルの最終更新日時 | 
                 
                
                  | 10 | 
                  最終 iノード更新日時 | 
                 
                
                  | 11 | 
                  ブロックサイズ | 
                 
                
                  | 12 | 
                  ブロック数 | 
                 
              
             
             
             
             | 
           
          
            | ファイルが存在するかなどを調べる | 
           
          
              
             
            ファイルが存在するかどうかなどを調べる 
             
             
            下のサンプルソースでは、 test.txt というファイルが存在する場合 「ファイルは存在します」 
            と表示し、無い場合 「ファイルが見つかりません」 と表示します。 
             
             
             
              
            ファイルが存在するかどうかの他に、ファイルかフォルダか、アクセス権はどうか? 
            などを調べる事ができます。 
             
            if (-e $setfile) の -e の部分を別のオプションに変更すると、 
            それらの情報を調べる事ができます。 
            
              
                
                  | -f | 
                  ファイルかどうかを調べる 
                  if で真になった場合はファイル | 
                 
                
                  | -d | 
                  ディレクトリかどうか調べる 
                  if で真になった場合ディレクトリ | 
                 
                
                  | -r | 
                  読み込み可能かどうか調べる 
                  if で真になった場合読み込み可能 | 
                 
                
                  | -w | 
                  書き込み可能かどうか調べる 
                  if で真になった場合書き込み可能 | 
                 
                
                  | -x | 
                  実行可能かどうか調べる 
                  if で真になった場合実行可能 | 
                 
              
             
             | 
           
          
            | ファイルを削除する | 
           
          
              
             
            ファイルの削除を行ってみます。 
             
             
            下のサンプルソースでは test.txt というファイルが存在したら削除します。 
            削除処理が行われた場合は削除したメッセージを表示します。 
             
             
             
              
            ファイルが正しく削除されたかどうかを調べる為には、 unlink関数 の返す値を見ます。 
            返す値は削除された場合、その個数を返しますので、削除処理を実行したにも関わらず 
            0個の場合は異常なので、下のようにエラーメッセージを表示します。 
             
             
             
             
             | 
           
          
            
             
            次項はファイルの更新日時を取得したり、コピーや削除といった 
            ファイルに関する操作の説明を行ってみます。 | 
           
          
              | 
           
          
            
             
             | 
           
          
             | 
           
        
       
       
       
       |