1. 基本的なファイル操作
ファイルの基本操作には、ファイル判定、ディレクトリ判定、ファイルサイズ、読み書き判定、存在判定、ファイル時間などがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
header("content-type","text/html;charset=utf-8"); /* *関数を宣言し、ファイル名を渡してファイル属性を取得します *@param string $fileName ファイル名 */ 関数getFilePro($fileName) { if(!file_exists($fileName)) { echo 'ファイルが存在しません '; 戻る; } /*これは普通のファイルですか*/ if(is_file($fileName)) { echo $fileName.' はファイルです '; } /*それはディレクトリですか*/ if(is_dir($fileName)) { echo $fileName.' はディレクトリです'; } /*出力ファイルの種類*/ echo 'ファイルの種類は: '.getFileType($fileName).' '; /*ファイルサイズ、変換単位*/ echo 'ファイル サイズは次のとおりです:'.getFileSize(filesize($fileName)).' '; /*ファイルが読み取り可能かどうか*/ if(is_readable($fileName)) { echo 'ファイルは読み取り可能です '; } /*ファイルが書き込み可能かどうか*/ if(is_writable($fileName)) { echo 'ファイルに書き込むことができます '; } /*ファイルが実行可能かどうか*/ if(is_executable($fileName)) { echo 'ファイルは実行可能です }
echo 'ファイル作成時刻:'.date('Y年m月j日',filectime($fileName)).' echo 'ファイルの最終変更時刻:'.date('Y年m月j日',filemtime($fileName)).' echo 'ファイルが最後に開かれた時間:'.date('Y年m月j日',fileatime($fileName)).' }
/* *ファイルタイプを返す関数を宣言します *@param string $fileName ファイル名 */ 関数getFileType($fileName) { $type = ''; スイッチ(ファイルタイプ($ファイル名)) { case 'file':$type .= '通常のファイル';break; case 'dir':$type .= 'ディレクトリ ファイル';break; case 'block':$type .= 'ブロックデバイスファイル';break; case 'char':$type .= 'キャラクターデバイスファイル';break; case 'filo':$type .= 'パイプファイル';break; case 'link':$type .= 'シンボリックリンク';break; case 'unknown':$type .= 'unknown file';break; デフォルト: } $type を返す; }
/* *ファイルサイズを返す関数を宣言します *@param int $bytes ファイル内のバイト数 */ 関数getFileSize($bytes) { if($bytes >= pow(2,40)) { $return =round($bytes / pow(1024,4),2); $suffix = 'TB'; } else if($bytes >= pow(2,30)) { $return =round($bytes / pow(1024,3),2); $suffix = 'GB'; } else if($bytes >= pow(2,20)) { $return =round($bytes / pow(1024,2),2); $suffix = 'MB'; } else if($bytes >= pow(2,10)) { $return =round($bytes / pow(1024,1),2); $suffix = 'KB'; } その他 { $return = $bytes; $suffix = 'B'; } return $return." ".$suffix; }
/*関数を呼び出し、test ディレクトリ内の test.txt ファイルを渡します*/ getFilePro('./test/div.html'); ?> |
結果:
2. ディレクトリ操作
ディレクトリ操作には、ディレクトリのトラバーサル、削除、コピー、サイズ統計などが含まれます。
1. ディレクトリを横断する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/* *ディレクトリをトラバースする *@param string $dirName ディレクトリ名 */ 関数 findDir($dirName) { $num = 0; /*サブファイルの数をカウントします*/ $dir_handle = opendir($dirName) /*ディレクトリを開く*/ /*出力ディレクトリファイル*/ echo '
Closedir($dir_handle); /*ディレクトリを閉じる*/ echo "ディレクトリ ".$dirName." には ".$num.'サブファイル' があります。 }/*現在のディレクトリの下にテストディレクトリを渡します*/ findDir('./test');
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/* *統計ディレクトリのサイズ *@param string $dirName ディレクトリ名 *@return double */
関数 dirSize($dirName) { $dir_size = 0; if($dir_handle = @opendir($dirName)) { while ($fileName = readdir($dir_handle)) { /*2 つの特別なディレクトリを除外します*/ if($fileName != '.' && $fileName != '..') $subFile = $dirName.'/'.$fileName; if(is_file($subFile))
$dir_size += filesize($subFile); } if(is_dir($subFile)) $dir_size += dirSize($subFile); } } } Closedir($dir_handle); $dir_size を返す; } } /*現在のディレクトリの下にテストディレクトリを渡します*/ $dir_size = dirSize('./test'); echo './test ディレクトリのファイル サイズは: '.round($dir_size / pow(1024,1),2).'KB';
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
/* *ディレクトリを削除 *@param string $dirName ディレクトリ名 */ 関数delDir($dirName) { /*php の mkdir 関数はディレクトリを作成できます*/ if(file_exists($dirName)) { if($dir_handle = @opendir($dirName)) { while ($fileName = readdir($dir_handle)) /*2 つの特別なディレクトリを除外します*/ if($fileName != '.' && $fileName != '..')
$subFile = $dirName.'/'.$fileName; if(is_file($subFile)) unlink($ subfile); } if(is_dir($subFile))
delDir($subFile); } } } Closedir($dir_handle); rmdir($dirName); return $dirName.'ディレクトリは削除されました'; } } } /*テスト ディレクトリ test1 のコピーを渡します*/ echo delDir('./test1');
削除が成功した場合のプロンプトメッセージ 4. ディレクトリをコピーします
www.bkjia.com |