檔案屬性
- filetype(string):回傳參數檔案的種類字串,可能的回傳值有:fifo、char、dir、block、link、file和unknown,如果有錯誤回傳false。
- fileatime(string):回傳參數檔案的最後存取時間,單位是UNIX的時間戳記,如果錯誤回傳false。
- filemtime(string):回傳參數檔案的最後更改時間,單位是UNIX的時間戳記,如果錯誤回傳false。
- filesize(string):回傳參數檔案尺寸,以位元組為單位,如果錯誤回傳false。
- is_dir(string):如果參數路徑存在且是路徑,回傳true,否則回傳false。
- is_file(string):如果參數檔案存在且是檔案,回傳true,否則回傳false。
- is_readable(string):如果參數檔案存在且可讀,回傳true,否則回傳false。
- is_writeable(string):如果參數檔案存在且可寫,回傳true,否則回傳false。如果是路徑,檢查路徑是否可寫。
- is_uploaded_file(string):如果參數檔案是使用HTTP POST上傳的檔案,就回傳true;否則為false。
開啟檔案
$fp = fopen($file, "r") // 開啟檔案
or exit("檔案 $file 開啟錯誤");
第一個參數為要開啟的檔案路徑或URL網址字串。(路徑如果是「\」,就需要使用逸出字元);第二個參數為檔案開啟的模式。
檔案開啟模式
- r:唯讀檔案
- r+:讀寫檔案,檔案指標位在檔頭,寫入資料會覆寫檔案內容。
- w:寫入檔案,清除目前檔案所有內容,檔案指標指向檔頭,如果檔案不存在,建立此檔案。
- w+:讀寫檔案,清除目前檔案所有內容,檔案指標指向檔頭,如果檔案不存在,建立此檔案。
- a:寫入檔案,檔案指標指向檔尾,從檔尾開始寫入資料,如果檔案不存在,建立此檔案。
- a+:讀寫檔案,檔案指標指向檔尾,從檔尾開始寫入資料,如果檔案不存在,建立此檔案。
- b:二進位檔案,不可以單獨使用,需要配合其他檔案模式。
關閉檔案
在完成檔案的讀寫後,請使用fclose()關閉檔案。
fclose($fp);
參數為所開啟的檔案。
寫入資料到檔案
寫入資料
if (fwrite($fp, $content)) // 寫入檔案
print "寫入檔案 $file 成功";
else
print "寫入檔案 $file 錯誤";
第一個參數為開啟的檔案。第二個參數為要寫入的內容。
限制寫入資料長度
if (fwrite($fp, $content, 10)) // 寫入檔案
print "寫入檔案 $file 成功";
else
print "寫入檔案 $file 錯誤";
第一個參數為開啟的檔案。第二個參數為要寫入的內容。第三個參數為限制寫入資料的位元組數。
讀取檔案內容
位元組數讀取內容
$contents = fread($fp, filesize($file));
第一個參數為開啟的檔案。第二個參數為要讀取的位元組數。(檔案內容如果有換行符號,可以使用nl2br(),將換行符號轉換成「<br/>」標籤)
讀取內容到陣列
這種讀取方式,會以換行符號對資料做分割。
$lines = file($file); // 將檔案讀入陣列
// 一行一行的顯示檔案內容
foreach ($lines as $line_num => $line) {
echo "$line_num : " . $line;
}
讀取內容並輸出
$num = readfile($file);
讀取圖檔
readfile()讀檔
$fileData = exif_read_data($file);
// HTTP標頭資訊
header("Content-Type: " . $fileData['MimeType']);
header("Content-Length: " . $fileData['FileSize']);
// 讀取檔案內容
readfile($file);
base64圖檔
$fileData = exif_read_data($file);
$fileEncode = base64_encode(file_get_contents($file));
// 輸出 <img> 標籤
echo '<img src="data:'.$fileData['MimeType'].';base64,'.$fileEncode.'"/>';