這篇文章主要介紹了關於PHP檔案編程的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
1 擷取檔案資訊
1.1 第一種方式(fopen、fstat、file_exists)
<?php$file_full_path = './test.txt';if(file_exists($file_full_path)){// 檢查檔案或目錄是否存在,存在則返回 TRUE,否則返回 FALSE$fp = fopen($file_full_path, 'r');// 開啟檔案或url,成功時返迴文件指標資源,如果開啟失敗,本函數返回 FALSE。$fileinfo_arr = fstat($fp);// 通過已開啟的檔案指標取得檔案資訊,返回一個數組具有該檔案的統計資訊echo '<pre>';var_dump($fileinfo_arr);echo '檔案的大小是:' . $fileinfo_arr['size'] . '個位元組';echo '檔案的建立時間是:' . date('Y-m-d H:i:s', $fileinfo_arr['ctime']);echo '檔案的訪問時間是:' . date('Y-m-d H:i:s', $fileinfo_arr['atime']);echo '檔案的修改時間是:' . date('Y-m-d H:i:s', $fileinfo_arr['mtime']);}else{echo '檔案不存在';}
1.2 第二種方式
<?php$file_full_path = './test.txt';if(file_exists($file_full_path)){echo '檔案的大小是:' . filesize($file_full_path);echo '檔案的類型是:' . filetype($file_full_path);echo '檔案的建立時間是:' . date('Y-m-d H:i:s', filectime($file_full_path));echo '檔案的訪問時間是:' . date('Y-m-d H:i:s', fileatime($file_full_path));echo '檔案的修改時間是:' . date('Y-m-d H:i:s', filemtime($file_full_path));}else{echo '檔案不存在';}
2 讀取檔案內容
2.1 第一種方式,fread
<?php$file_full_path = './test.txt';if(file_exists($file_full_path)){// 1、開啟檔案$fp = fopen($file_full_path, 'r');// 2、擷取檔案的大小$file_size = filesize($file_full_path);// 3、讀取內容$con_str = fread($fp, $file_size);// 返回所讀取的字串, 或者在失敗時返回 FALSE。fclose($fp);// 替換分行符號$con_str = str_replace("\r\n", '<br>', $con_str);$con_str = str_replace("\n", '<br>', $con_str);// 替換 tab$con_str = str_replace("", " ", $con_str);echo $con_str;}else{echo '檔案不存在';}
2.2 第二種方式,feof
<?php$file_full_path = './test.txt';if(file_exists($file_full_path)){$fp = fopen($file_full_path, 'r');// 設定緩衝$buffer = '';$buffer_size = 1024;$con_str = '';while(!feof($fp)){// 測試檔案指標是否到了檔案結束的位置,到達返回true,否則返回false$buffer = fread($fp, $buffer_size);$con_str .= $buffer;}// 關閉檔案fclose($fp);$con_str = str_replace("\r\n", '<br>', $con_str);$con_str = str_replace("\n", '<br>', $con_str);$con_str = str_replace("", ' ', $con_str);echo $con_str;}else{echo '檔案不存在';}
2.3 第三種方式,file_get_contents
<?php$file_full_path = './test.txt';if(file_exists($file_full_path)){$con_str = file_get_contents($file_full_path);// 將整個檔案讀入一個字串$con_str = str_replace("\r\n", '<br>', $con_str);$con_str = str_replace("\n", '<br>', $con_str);$con_str = str_replace("", ' ', $con_str);echo $con_str;}else{echo '檔案不存在';}
3 建立檔案,並寫入內容
3.1 案例1
<?php$file_full_path = './test.txt';if(!file_exists($file_full_path)){if($fp = fopen($file_full_path, 'w')){// 覆蓋寫入10句helloworld$con = '';for($i=0; $i<10; $i++){$con .= "HelloWorld\r\n";}// 寫入檔案fwrite($fp, $con);// fwrite() 返回寫入的字元數,出現錯誤時則返回 FALSE 。 fclose($fp);}else{echo '建立檔案失敗';}}else{echo '檔案已經存在';}
3.2 案例2,file_put_contents
<?php$file_full_path = './test.txt';if(!file_exists($file_full_path)){$con = '';for($i=0; $i<10; $i++){$con .= "helloworld\r\n";}// 預設是覆蓋寫,可以追加FILE_APPEND參數,改為追加寫。file_put_contents($file_full_path, $con);// 和依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。 }else{echo '已經存在該檔案';}
4 刪除檔案
<?php$file_full_path = './test.txt';if(file_exists($file_full_path)){if(unlink($file_full_path)){echo '<br>刪除成功';}else{echo '<br>刪除失敗';}}else{echo '檔案不存在,無法刪除';}
5 修改檔案名稱
<?php$file_full_path = './test.txt';$file_new_full_path = './王八.txt';$file_new_full_path = iconv('utf-8', 'gbk', $file_new_full_path);if(file_exists($file_full_path)){if(rename($file_full_path, $file_new_full_path)){// 重新命名一個檔案或目錄echo '改名成功!';}else{echo '改名失敗!';}}else{echo '檔案不存在';}
6 操作檔案目錄
6.1 建立一級目錄
<?php$dir_full_path = './abc';// 判斷有沒有該目錄if(!is_dir($dir_full_path)){if(mkdir($dir_full_path)){echo '建立目錄成功!';}else{echo '建立目錄失敗!';}}else{echo '已經存在該目錄,無法再次建立';}
6.2 建立多級目錄
<?php$dir_full_path = './abc/edf/xyz';if(!is_dir($dir_full_path)){if(mkdir($dir_full_path, 0777, true)){// true 表示遞迴建立echo '建立目錄成功';}else{echo '建立目錄失敗';}}else{echo '已經存在該目錄,無法再次建立!';}
6.3 刪除目錄(一級)
<?php$dir_full_path = './abc';if(is_dir($dir_full_path)){if(rmdir($dir_full_path)){echo '刪除目錄成功';}else{echo '刪除目錄失敗';}}else{echo '不存在該檔案夾';}
7 檔案編程的應用案例
7.1 如何拷貝一張圖片
<?php$file_src_full_path = 'F:/壁紙.jpg';$file_src_full_path = iconv('utf-8', 'gbk', $file_src_full_path);$file_des_full_path = 'D:/amp/WWW/蕭山.jpg';$file_des_full_path = iconv('utf-8', 'gbk', $file_des_full_path);if(file_exists($file_src_full_path)){if(copy($file_src_full_path, $file_des_full_path)){echo '拷貝成功';}else{echo '拷貝失敗';}}else{echo '沒有這個檔案';}
7.2 遍曆某個檔案夾,判斷檔案夾下面內容分別是目錄和檔案
<?php$dir_full_path = 'D:/amp/WWW/';if(is_dir($dir_full_path)){$dir_handle = opendir($dir_full_path);// 如果成功則返回目錄控制代碼的 resource,失敗則返回 FALSEwhile(($file_name = readdir($dir_handle)) !== false){// 成功則返迴文件名 或者在失敗時返回 FALSE if(is_dir($dir_full_path . $file_name)){echo $file_name . '是目錄<br>';}else{echo $file_name . '是檔案<br>';}}closedir($dir_handle);}else{echo '不是目錄,無法開啟';}
7.3 寫一個函數統計某個目錄所有檔案的大小
<?php$dir_name = 'D:/amp/WWW';function getDirSize($dir_name){$dir_size = 0;$dir_handle = opendir($dir_name);while(($file_name = readdir($dir_handle)) !== false){$file = $dir_name . '/' . $file_name;// 檔案全名if($file_name!=='.' && $file_name!=='..'){if(is_dir($file)){$dir_size += getDirSize($file);}else{$dir_size += filesize($file);}}}closedir($dir_handle);return $dir_size;}echo getDirSize($dir_name);
7.4 刪除某個目錄
<?php$dir_name = 'D:/amp/WWW/.idea';function rrmdir($src){$dir_handle = opendir($src);while(false !== ($file = readdir($dir_handle))){if(($file != '.') && ($file != '..')){$full = $src . '/' . $file;if(is_dir($full)){rrmdir($full);}else{unlink($full);}}}closedir($dir_handle);rmdir($src);}rrmdir($dir_name);
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!