PHP-文件、目錄相關操作
一 目錄操作(Directory 函數允許獲得關於目錄及其內容的信息)
相關函數:
函數 | 描述 |
---|---|
chdir() | 改變當前的目錄。 |
chroot() | 改變根目錄。 |
closedir() | 關閉目錄句柄。 |
dir() | 返回 Directory 類的實例。 |
getcwd() | 返回當前工作目錄。 |
opendir() | 打開目錄句柄。 |
readdir() | 返回目錄句柄中的條目。 |
rewinddir() | 重置目錄句柄。 |
scandir() | 返回指定目錄中的文件和目錄的數組。 |
ps:詳解:http://www.w3school.com.cn/php/php_ref_directory.asp
二 文件操作
運行環境區別:當在 Unix 平台上規定路徑時,正斜杠 (/) 用作目錄分隔符。而在 Windows 平台上,正斜杠 (/) 和反斜杠 (\) 均可使用。
相關函數:
函數 | 描述 | PHP |
---|---|---|
basename() | 返回路徑中的文件名部分。 | 3 |
chgrp() | 改變文件組。 | 3 |
chmod() | 改變文件模式。 | 3 |
chown() | 改變文件所有者。 | 3 |
clearstatcache() | 清除文件狀態緩存。 | 3 |
copy() | 復制文件。 | 3 |
delete() | 參見 unlink() 或 unset()。 | |
dirname() | 返回路徑中的目錄名稱部分。 | 3 |
disk_free_space() | 返回目錄的可用空間。 | 4 |
disk_total_space() | 返回一個目錄的磁盤總容量。 | 4 |
diskfreespace() | disk_free_space() 的別名。 | 3 |
fclose() | 關閉打開的文件。 | 3 |
feof() | 測試文件指針是否到了文件結束的位置。 | 3 |
fflush() | 向打開的文件輸出緩沖內容。 | 4 |
fgetc() | 從打開的文件中返回字符。 | 3 |
fgetcsv() | 從打開的文件中解析一行,校驗 CSV 字段。 | 3 |
fgets() | 從打開的文件中返回一行。 | 3 |
fgetss() | 從打開的文件中讀取一行並過濾掉 HTML 和 PHP 標記。 | 3 |
file() | 把文件讀入一個數組中。 | 3 |
file_exists() | 檢查文件或目錄是否存在。 | 3 |
file_get_contents() | 將文件讀入字符串。 | 4 |
file_put_contents() | 將字符串寫入文件。 | 5 |
fileatime() | 返回文件的上次訪問時間。 | 3 |
filectime() | 返回文件的上次改變時間。 | 3 |
filegroup() | 返回文件的組 ID。 | 3 |
fileinode() | 返回文件的 inode 編號。 | 3 |
filemtime() | 返回文件的上次修改時間。 | 3 |
fileowner() | 文件的 user ID (所有者)。 | 3 |
fileperms() | 返回文件的權限。 | 3 |
filesize() | 返回文件大小。 | 3 |
filetype() | 返回文件類型。 | 3 |
flock() | 鎖定或釋放文件。 | 3 |
fnmatch() | 根據指定的模式來匹配文件名或字符串。 | 4 |
fopen() | 打開一個文件或 URL。 | 3 |
fpassthru() | 從打開的文件中讀數據,直到 EOF,並向輸出緩沖寫結果。 | 3 |
fputcsv() | 將行格式化為 CSV 並寫入一個打開的文件中。 | 5 |
fputs() | fwrite() 的別名。 | 3 |
fread() | 讀取打開的文件。 | 3 |
fscanf() | 根據指定的格式對輸入進行解析。 | 4 |
fseek() | 在打開的文件中定位。 | 3 |
fstat() | 返回關於一個打開的文件的信息。 | 4 |
ftell() | 返回文件指針的讀/寫位置 | 3 |
ftruncate() | 將文件截斷到指定的長度。 | 4 |
fwrite() | 寫入文件。 | 3 |
glob() | 返回一個包含匹配指定模式的文件名/目錄的數組。 | 4 |
is_dir() | 判斷指定的文件名是否是一個目錄。 | 3 |
is_executable() | 判斷文件是否可執行。 | 3 |
is_file() | 判斷指定文件是否為常規的文件。 | 3 |
is_link() | 判斷指定的文件是否是連接。 | 3 |
is_readable() | 判斷文件是否可讀。 | 3 |
is_uploaded_file() | 判斷文件是否是通過 HTTP POST 上傳的。 | 3 |
is_writable() | 判斷文件是否可寫。 | 4 |
is_writeable() | is_writable() 的別名。 | 3 |
link() | 創建一個硬連接。 | 3 |
linkinfo() | 返回有關一個硬連接的信息。 | 3 |
lstat() | 返回關於文件或符號連接的信息。 | 3 |
mkdir() | 創建目錄。 | 3 |
move_uploaded_file() | 將上傳的文件移動到新位置。 | 4 |
parse_ini_file() | 解析一個配置文件。 | 4 |
pathinfo() | 返回關於文件路徑的信息。 | 4 |
pclose() | 關閉有 popen() 打開的進程。 | 3 |
popen() | 打開一個進程。 | 3 |
readfile() | 讀取一個文件,並輸出到輸出緩沖。 | 3 |
readlink() | 返回符號連接的目標。 | 3 |
realpath() | 返回絕對路徑名。 | 4 |
rename() | 重名名文件或目錄。 | 3 |
rewind() | 倒回文件指針的位置。 | 3 |
rmdir() | 刪除空的目錄。 | 3 |
set_file_buffer() | 設置已打開文件的緩沖大小。 | 3 |
stat() | 返回關於文件的信息。 | 3 |
symlink() | 創建符號連接。 | 3 |
tempnam() | 創建唯一的臨時文件。 | 3 |
tmpfile() | 建立臨時文件。 | 3 |
touch() | 設置文件的訪問和修改時間。 | 3 |
umask() | 改變文件的文件權限。 | 3 |
unlink() | 刪除文件。 | 3 |
ps:詳解:http://www.w3school.com.cn/php/php_ref_filesystem.asp
相關詳解:
1. fopen -- 打開文件或者 URL
mode 說明
'r' 只讀方式打開,將文件指針指向文件頭。
'r+' 讀寫方式打開,將文件指針指向文件頭。
'w' 寫入方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。
'w+' 讀寫方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。
'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'x' 創建並以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,
'x+' 創建並以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE
eg:
2. file -- 把整個文件讀入一個數組中(此函數是很有用的)
和 file_get_contents() 一樣,只除了 file() 將文件作為一個數組返回。數組中的每個單元都是文件中相應的一行,包括換行符在內。如果失敗 file() 返回 FALSE。
eg:

// 在數組中循環,顯示 HTML 的源文件並加上行號。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一個例子將 web 頁面讀入字符串。參見 file_get_contents()。
$html = implode('', file ('http://www.example.com/'));
3. fgets -- 從文件指針中讀取一行
從 handle 指向的文件中讀取一行並返回長度最多為 length - 1 字節的字符串。碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length - 1 字節后停止(看先碰到那一種情況)。如果沒有指定 length,則默認為 1K,或者說 1024 字節。
eg:
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
4. fgetss -- 從文件指針中讀取一行並過濾掉 HTML 標記
和 fgets() 相同,只除了 fgetss 嘗試從讀取的文本中去掉任何 HTML 和 PHP 標記。
可以用可選的第三個參數指定哪些標記不被去掉
另:對的目錄的操作:
1. opendir -- 打開目錄句柄,打開一個目錄句柄,可用於之后的 closedir(),readdir() 和 rewinddir() 調用中。
2. readdir -- 從目錄句柄中讀取條目,返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回。
eg:

if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Files:\n";
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
while ($file = readdir($handle)) {
echo "$file\n";
}
closedir($handle);
}
3. scandir -- 列出指定路徑中的文件和目錄(很有用),返回一個 array,包含有 directory 中的文件和目錄。
默認的排序順序是按字母升序排列。如果使用了可選參數 sorting_order(設為 1),則排序順序是按字母降序排列。
eg:
$files1 = scandir($dir);
$files2 = scandir($dir, 1);
print_r($files1);
print_r($files2);
文件操作
1文件是否可讀:
boolis_readable ( string filename )
如果由 filename
指定的文件或目錄存在並且可讀則返回 TRUE。
記住 PHP 也許只能以運行 webserver 的用戶名(通常為 'nobody')來訪問文件。不計入安全模式的限制。
2 文件是否可寫
bool is_writable ( string filename )
如果文件存在並且可寫則返回 TRUE。filename
參數可以是一個允許進行是否可寫檢查的目錄名。
記住 PHP 也許只能以運行 webserver 的用戶名(通常為 'nobody')來訪問文件。不計入安全模式的限制
3 檢查文件是否存在
boolfile_exists ( string filename )
如果由 filename
指定的文件或目錄存在則返回 TRUE,否則返回 FALSE