PHP 檔案操作
阿新 • • 發佈:2020-11-20
檔案操作
檔案型別
-
windows系統識別的檔案型別
- file
- dir
- unknown
-
filetype()
判斷檔案型別- 檔案不存在,返回false
<?php $filename1= 'D:\Program Files\xampp\htdocs\index.php'; $filename2= 'D:\Program Files\xampp\htdocs'; $filename3= 'D:\Program Files\xampp\htdoc'; var_dump(filetype($filename1)); var_dump(filetype($filename2)); var_dump(filetype($filename3)); ?>
file_exists()
判斷檔案是否存在- 檔案存在,返回true
- 檔案不存在,返回false
<?php $filename1= 'D:\Program Files\xampp\htdocs\index.php'; $filename2= 'D:\Program Files\xampp\htdocs'; $filename3= 'D:\Program Files\xampp\htdoc'; var_dump(file_exists($filename1)); var_dump(file_exists($filename2)); var_dump(file_exists($filename3)); ?>
檔案屬性
- 獲取檔案屬性的函式
filesize
獲取檔案大小filectime
獲取檔案的建立時間filemtime
獲取檔案的修改時間fileatime
獲取檔案的上次訪問時間is_readable
判斷給定檔案是否可讀is_writable
判斷給定檔案是否可寫is_executable
判斷給定檔案是否可執行is_file
判斷給定檔案是否為一個正常的檔案is_dir
判斷給定檔案是否是一個目錄stat
給出檔案的資訊
<?php $filename= 'D:\Program Files\xampp\htdocs\index.php'; if(file_exists($filename)& is_file($filename)){ echo "檔案大小為:".filesize($filename)."位元組!<br>"; echo "檔案的建立時間為:".date('Y年m月d日', filectime($filename))."<br>"; echo "檔案的修改時間為:".date('Y年m月d日', filemtime($filename))."<br>"; echo "檔案的訪問時間為:".date('Y年m月d日', fileatime($filename))."<br>"; echo is_readable($filename)? "該檔案可讀<br>": "該檔案不可讀<br>"; echo is_writable($filename)? "該檔案可寫<br>": "該檔案不可寫<br>"; echo is_executable($filename)? "該檔案可執行<br>": "該檔案不可執行<br>"; echo "<pre>"; print_r(stat($filename)); echo "</pre>"; }else{ echo "該檔案不存在!"; } ?>
檔案操作
開啟和關閉檔案
fopen()
開啟檔案
<?php
$downURL= 'http://rrh2.ufile.ucloud.com.cn/iXiaoma.rar';
$file1= fopen('D:\Program Files\xampp\htdocs\login.html', 'r');
$file2= fopen('D:\Program Files\xampp\htdocs\login.html', 'w');
$file3= fopen($downURL, 'r');
$file4= fopen('ftp://user:[email protected]/index.html', 'w');
echo "{$file1}<br>";
echo "{$file2}<br>";
echo "{$file3}<br>";
echo "{$file4}<br>";
?>
fclose()
關閉檔案- 成功返回 true
- 失敗返回 false
<?php
$file= fopen('D:\Program Files\xampp\htdocs\login.html', 'r');
echo "檔案開啟成功!<br>".$file."<br>";
if(fclose($file)){
echo "檔案關閉成功!";
}
?>
讀取檔案
fread()
用於在開啟檔案時讀取指定長度的字串
<?php
$filename= 'D:\Program Files\xampp\htdocs\error_log.txt';
$file= fopen($filename, 'r');
$content= fread($file, 33);
echo "檔案讀取:{$content}<br>";
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
# 讀取全文
$file= fopen($filename, 'r');
$contentAll= fread($file, filesize($filename));
echo "檔案讀取:{$contentAll}<br>";
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
?>
fgetc()
用於在開啟的檔案中讀取一個字元
<?php
$filename= 'D:\Program Files\xampp\htdocs\error_log.txt';
$file= fopen($filename, 'r');
$content= fgetc($file);
echo "檔案讀取:{$content}<br>";
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
?>
fgets()
用於在開啟的檔案中讀取一行
<?php
$filename= 'D:\Program Files\xampp\htdocs\error_log.txt';
$file= fopen($filename, 'r');
$content= fgets($file);
echo "檔案讀取:{$content}<br>";
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
?>
file_get_contents()
用於將檔案的內容全部讀取到一個字串中
<?php
$filename= 'D:\Program Files\xampp\htdocs\error_log.txt';
$content= file_get_contents($filename);
echo "檔案讀取:{$content}<br>";
?>
readfile()
用於將檔案的內容全部輸出到終端
<?php
$filename= 'D:\Program Files\xampp\htdocs\error_log.txt';
readfile($filename);
?>
file()
將整個檔案讀入到陣列中
<?php
$filename= 'D:\Program Files\xampp\htdocs\error_log.txt';
$content= file($filename);
foreach($content as $key=>$value){
echo "{$key} : {$value}<br>";
}
?>
寫入檔案
fwrite()
用於寫入檔案fopen($filename, 'w')
只寫模式,檔案清空重寫fopen($filename, 'a')
追加模式,檔案追加續寫
<?php
$filename= 'D:\Program Files\xampp\htdocs\sunny_log.txt';
$content= "塔萌萌\r\n";
$file= fopen($filename, 'a');
echo "檔案開啟成功!<br>";
fwrite($file, $content);
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
?>
file_put_contents()
用於對檔案進行寫操作- 不需要開啟檔案
- 預設,檔案清空重寫
<?php
$filename= 'D:\Program Files\xampp\htdocs\sunny_log.txt';
$content= "塔萌萌啊\r\n";
file_put_contents($filename, $content, FILE_APPEND);
echo '檔案寫入成功';
?>
檔案加鎖機制
flock()
實現檔案加鎖機制LOCK_SH
取得共享鎖定(讀檔案時使用)LOCK_EX
取得獨佔鎖定(寫檔案時使用)LOCK_UN
釋放鎖定(無論共享與獨佔,都用它釋放)LOCK_NB
如果不希望 flock() 在鎖定時堵塞,則給operation加上LOCK_NB
<?php
$filename= 'D:\Program Files\xampp\htdocs\sunny_log.txt';
$content= "塔萌萌啊\r\n";
$file= fopen($filename, 'w+');
if(flock($file, LOCK_EX)){
fwrite($file, $content);
flock($file, LOCK_UN);
}else{
echo "檔案不能被鎖定!";
}
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
?>
二進位制讀取
fread()
實現二進位制讀取- 檔案的儲存有兩種:字元流和二進位制流
- 二進位制流的讀取按檔案大小來讀的
<?php
$path= 'D:\Program Files\xampp\htdocs\pig.jpg';
$file= fopen($path, 'r');
header('content-type:image/jpeg');
echo fread($file, filesize($path));
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
?>
file_get_contents()
實現二進位制讀取
<?php
$path= 'D:\Program Files\xampp\htdocs\pig.jpg';
header('content-type:image/jpeg');
echo file_get_contents($path);
?>
複製檔案
copy()
用於實現拷貝檔案的功能
<?php
$path= 'D:\Program Files\xampp\htdocs\pig.jpg';
$newPath= 'D:\Program Files\xampp\htdocs\img\pig.jpg';
if(copy($path, $newPath)){
echo '拷貝成功';
}else{
echo '拷貝失敗';
}
?>
重新命名檔案
rename()
用於實現檔案或目錄的重新命名功能
<?php
$name= 'D:\Program Files\xampp\htdocs\pig.jpg';
$newName= 'D:\Program Files\xampp\htdocs\piger.png';
$newPath= 'D:\Program Files\xampp\htdocs\img\pigger.jpg';
rename($name, $newName);
echo '檔案重新命名成功'."<br>";
rename($newName, $newPath);
echo '檔案重新命名並指定新位置'."<br>";
?>
刪除檔案
unlink()
其作用是刪除檔案
<?php
$path= 'D:\Program Files\xampp\htdocs\jerry.txt';
$file= fopen($path, 'a');
fwrite($file, "蝸萌\n");
if(fclose($file)){
echo "檔案關閉成功!<br>";
}
if(unlink($path)){
echo "檔案刪除成功!<br>";
}
?>
目錄操作
解析目錄
basename()
用於返回路徑中的檔名
<?php
$path= 'D:\Program Files\xampp\htdocs\sunny.txt';
$file1= basename($path);
echo $file1."<br>";
$file2= basename($path, '.txt');
echo $file2."<br>";
?>
dirname()
用於返回路徑中的目錄部分
<?php
$path= 'D:\Program Files\xampp\htdocs\sunny.txt';
echo dirname($path);
?>
pathinfo()
用於以陣列的形式返回路徑的資訊
<?php
$path= 'D:\Program Files\xampp\htdocs\sunny.txt';
echo '<pre>';
print_r(pathinfo($path));
echo '</pre>';
?>
遍歷目錄
opendir()
用於開啟一個目錄控制代碼
<?php
$dir= 'D:\Program Files\xampp\htdocs';
echo opendir($dir);
?>
-
closedir()
用於關閉目錄控制代碼- 沒有返回值
-
readdir()
用於從目錄控制代碼中讀取條目
<?php
$dir= 'D:\Program Files\xampp\htdocs\img';
if(is_dir($dir)){
if($dh= opendir($dir)){
while(($file= readdir($dh))!== false){
echo "filename:".$file."<br>";
}
closedir($dh);
echo "目錄關閉成功!";
}
}
?>
rewindir()
用於倒回目錄控制代碼
建立和刪除目錄
mkdir()
用於新建目錄