第六章 php目录与文件操作_PHP
一.目录操作
basename -- 返回路径中的文件名部分
dirname -- 返回路径中的目录部分
pathinfo -- 返回文件路径的信息
realpath -- 返回规范化的绝对路径名
复制代码 代码如下:
$path = 'demo1.php';
$path = realpath($path);
echo basename($path);
echo '
';
echo dirname($path);
echo '
';
$array_path = pathinfo($path);
echo 'basename : '.$array_path['basename'].'
';
echo 'dirname : '.$array_path['dirname'].'
';
echo 'extension : '.$array_path['extension'].'
';
echo 'filename : '.$array_path['filename'].'
';
?>
Output:
demo1.php
D:\AppServ\www\Basic6
basename : demo1.php
dirname : D:\AppServ\www\Basic6
extension : php
filename : demo1
二.磁盘、目录和文件计数
1.查看文件大小和磁盘空间
filesize -- 取得文件大小
disk_free_space -- 返回目录中的可用空间
disk_total_space -- 返回一个目录的磁盘总大小
复制代码 代码如下:
$path ='demo2.php';
$path = realpath($path);
$drive = 'c:';
echo round(filesize($path)/1024,2).'kb'.'
';
echo round(disk_free_space($drive)/1024/1024/1024,2).'GB'.'
';
echo round(disk_total_space($drive)/1024/1024/1024,2).'GB'.'
';
?>
output
0.26kb
10.61GB
30.01GB
2.获得文件的各种时间
fileatime -- 取得文件的上次访问时间
filectime -- 取得文件的 inode 修改时间
filemtime -- 取得文件修改时间
复制代码 代码如下:
$file = realpath ( '../Basic5/demo3.php' );
$date_format = 'Y-m-d h:i:s';
echo 'lastest accessing time : '.date ( $date_format, fileatime ( $file ) ) . '
';
echo 'lastest change time : '.date ( $date_format, filectime ( $file ) ) . '
';
echo 'lastest modify time : '.date ( $date_format, filemtime ( $file ) ) . '
';
?>
output
lastest accessing time : 2011-12-18 04:26:49
lastest change time : 2011-12-18 04:26:49
lastest modify time : 2011-12-18 04:29:15
三.文件处理
文件读写的两种方式:
1.php所有版本都支持的方法:
fopen -- 打开文件或者 URL
fclose -- 关闭一个已打开的文件指针
fwrite -- 写入文件(可安全用于二进制文件)
表 1. fopen() 中 mode 的可能值列表
mode |
说明 |
'r' |
只读方式打开,将文件指针指向文件头。 |
'r+' |
读写方式打开,将文件指针指向文件头。 |
'w' |
写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' |
读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' |
写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' |
读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'x' |
创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 |
'x+' |
创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 |
$fp = fopen('file1.txt','w');
$outStr = "my name is anllin,\r\nmy age is 29.";
fwrite($fp,$outStr,strlen($outStr));
fclose($fp);
?>
output
my name is anllin,
my age is 29.
2.php5新加入的方法
file_put_contents -- 将一个字符串写入文件
复制代码 代码如下:
file_put_contents('file2.txt',"my name is anllin,\r\nmy age is 29.");
?>
output
my name is anllin,
my age is 29.
读出文件内容的方法:
函数 |
功能 |
Fgetc() |
读出一个字符,并将指针移到下一个字符 |
Fgets() |
读出一行字符,可以指定一行显示的长度。 |
Fgetss() |
从文件指针中读取一行并过滤掉HTML标记 |
Fread() |
读取定量的字符 |
Fpassthru() |
输出文件到指定处的所有剩余数据 |
File() |
将整个文件读入数组中,以行分组 |
Readfile() |
读入一个文件并写入到输出缓冲 |
File_get_contents() |
将整个文件读入一个字符串 |
Feof() |
判断读完文件函数 |
File_exists() |
查看文件是否存在 |
my name is anllin,
my age is 29.
fgetc -- 从文件指针中读取字符
Demo.php
复制代码 代码如下:
$fp = fopen('file1.txt','r');
echo fgetc($fp);
echo fgetc($fp);
fclose($fp);
?>
Output:
my
fgets -- 从文件指针中读取一行
复制代码 代码如下:
$fp = fopen('file1.txt','r');
echo fgets($fp);
echo fgets($fp);
fclose($fp);
?>
output
my name is anllin, my age is 29.
fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记
复制代码 代码如下:
$fp = fopen('file3.txt','w');
$outStr = "my name is anllin";
fwrite($fp,$outStr,strlen($outStr));
fclose($fp);
$ftp = fopen('file3.txt','r');
echo fgetss($ftp);
fclose($ftp);
?>
Output
my name is anllin
fread -- 读取文件(可安全用于二进制文件)
复制代码 代码如下:
$filename = 'file1.txt';
$fp = fopen($filename,'r');
$contents = fread($fp,filesize($filename));
echo $contents;
fclose($fp);
?>
Output
my name is anllin, my age is 29.
fpassthru -- 输出文件指针处的所有剩余数据
复制代码 代码如下:
$filename = 'file1.txt';
$fp = fopen($filename,'rb');
$leftSize = fpassthru($fp);
echo $leftSize;
fclose($fp);
?>
output
my name is anllin, my age is 29. 33
file -- 把整个文件读入一个数组中
复制代码 代码如下:
$lines = file('file1.txt');
foreach ($lines as $line_num => $line)
{
echo $line_num.' : '.$line.'
';
}
?>
output
0 : my name is anllin,
1 : my age is 29.
readfile -- 输出一个文件
复制代码 代码如下:
$size = readfile('file1.txt');
echo $size;
?>
output
my name is anllin, my age is 29.33
file_get_contents -- 将整个文件读入一个字符串(php5.0新增)
复制代码 代码如下:
$contents = file_get_contents('file1.txt');
echo $contents;
?>
output
my name is anllin, my age is 29.
feof -- 测试文件指针是否到了文件结束的位置
复制代码 代码如下:
$fp = fopen('file1.txt','r');
while(!feof($fp))
{
echo fgetc($fp);
}
fclose($fp);
?>
output
my name is anllin, my age is 29.
file_exists -- 检查文件或目录是否存在
复制代码 代码如下:
$filename = 'file1.txt';
if(file_exists($filename))
{
echo '执行文件读写操作';
}
else
{
echo '你要找的文件不存在';
}
?>
output
执行文件读写操作
filesize -- 取得文件大小
复制代码 代码如下:
$file_size = filesize('file1.txt');
echo $file_size;
?>
output
33
unlink -- 删除文件
复制代码 代码如下:
$isDeleted = unlink('file3.txt');
echo $isDeleted;
?>
output
1
rewind -- 倒回文件指针的位置
ftell -- 返回文件指针读/写的位置
fseek -- 在文件指针中定位
复制代码 代码如下:
$fp = fopen ( 'file1.txt', 'r' );
fgetc ( $fp );
fgetc ( $fp );
echo ftell ( $fp ) . '
';
rewind ( $fp );
echo ftell ( $fp ) . '
';
fgetc ( $fp );
fgetc ( $fp );
echo ftell ( $fp ) . '
';
fseek($fp,0);//same as rewind ($fp)
echo ftell ( $fp ) . '
';
?>
output
2
0
2
0
Flock的操作值
操作值 |
意义 |
LOCK_SH(以前为1) |
读写锁定。这意味着文件可以共享,其他人可以读该文件 |
LOCK_EX(以前为2) |
写操作锁定。这是互斥的,该文件不能被共享 |
LOCK_UN(以前为3) |
释放已有的锁定 |
LOCK_NB(以前为4) |
防止在请求加锁时发生阻塞 |
复制代码 代码如下:
$filename = 'file1.txt';
$fp = fopen($filename,'rb');
flock($fp,LOCK_EX);//locked
$contents = fread($fp,filesize($filename));
flock($fp,LOCK_UN);//unlocked
echo $contents;
fclose($fp);
?>
output
my name is anllin, my age is 29.
目录句柄操作
opendir -- 打开目录句柄
readdir -- 从目录句柄中读取条目
closedir -- 关闭目录句柄
复制代码 代码如下:
$dir= opendir('../Basic6');
while(!!$file = readdir($dir))
{
echo $file.'
';
}
closedir($dir);
?>
output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
scandir -- 列出指定路径中的文件和目录
复制代码 代码如下:
$files = scandir('../Basic6');
foreach($files as $file)
{
echo $file.'
';
}
?>
output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo21.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
rename -- 重命名一个文件或目录
复制代码 代码如下:
rename('demo1.php','demo01.php');
if(file_exists('demo01.php'))
{
echo 'file rename success';
}
else
{
echo 'file rename fail';
}
?>
output
file rename success
rmdir -- 删除目录
复制代码 代码如下:
rmdir('123');
if(file_exists('123'))
{
echo 'delete file fail';
}
{
echo 'delete file success';
}
?>
output
delete file success

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Tmp格式檔案是一種暫存檔案格式,通常由電腦系統或程式在執行過程中產生。這些文件的目的是儲存臨時數據,以幫助程式正常運行或提高效能。一旦程式執行完成或電腦重啟,這些tmp檔案往往就沒有了存在的必要性。所以,對於Tmp格式檔案來說,它們本質上是可以刪除的。而且,刪除這些tmp檔案能夠釋放硬碟空間,確保電腦的正常運作。但是,在刪除Tmp格式檔案之前,我們需

在電腦中刪除或解壓縮資料夾,時有時會彈出提示對話框“錯誤0x80004005:未指定錯誤”,如果遇到這中情況應該怎麼解決呢?提示錯誤碼0x80004005的原因其實很多,但大部分因為病毒導致,我們可以重新註冊dll來解決問題,下面,小編給大夥講解0x80004005錯誤代碼處理經驗。有使用者在使用電腦時出現錯誤代碼0X80004005的提示,0x80004005錯誤主要是由於電腦沒有正確註冊某些動態連結庫文件,或電腦與Internet之間存在不允許的HTTPS連接防火牆所引起。那麼如何

夸克網盤和百度網盤都是現在最常用的儲存文件的網盤軟體,如果想要將夸克網盤內的文件保存到百度網盤,要怎麼操作呢?本期小編整理了夸克網盤電腦端的檔案轉移到百度網盤的教學步驟,一起來看看是怎麼操作吧。 夸克網盤的檔案怎麼存到百度網盤?要將夸克網盤的文件轉移到百度網盤,首先需在夸克網盤下載所需文件,然後在百度網盤用戶端中選擇目標資料夾並開啟。接著,將夸克網盤中下載的檔案拖放到百度網盤用戶端開啟的資料夾中,或使用上傳功能將檔案新增至百度網盤。確保上傳完成後在百度網盤中查看檔案是否已成功轉移。這樣就

檔案路徑是作業系統中用於識別和定位檔案或資料夾的字串。在檔案路徑中,常見的有兩種符號分隔路徑,即正斜線(/)和反斜線()。這兩個符號在不同的作業系統中有不同的使用方式和意義。正斜線(/)是Unix和Linux系統中常用的路徑分隔符號。在這些系統中,檔案路徑是以根目錄(/)為起始點,每個目錄之間使用正斜線進行分隔。例如,路徑/home/user/Docume

最近有很多網友問小編,hiberfil.sys是什麼文件? hiberfil.sys佔用了大量的C碟空間可以刪除嗎?小編可以告訴大家hiberfil.sys檔是可以刪除的。下面就來看看詳細的內容。 hiberfil.sys是Windows系統中的隱藏文件,也是系統休眠文件。通常儲存在C盤根目錄下,其大小與系統安裝記憶體大小相當。這個檔案在電腦休眠時被使用,其中包含了當前系統的記憶體數據,以便在恢復時快速恢復到先前的狀態。由於其大小與記憶體容量相等,因此它可能會佔用較大的硬碟空間。 hiber

MySQL中.ibd檔案的作用詳解及相關注意事項MySQL是一種流行的關聯式資料庫管理系統,資料庫中的資料儲存在不同的檔案中。其中,.ibd檔案是InnoDB儲存引擎中的資料文件,用於儲存表格中的資料和索引。本文將對MySQL中.ibd檔案的作用進行詳細解析,並提供相關程式碼範例以幫助讀者更好地理解。一、.ibd檔的作用:儲存資料:.ibd檔是InnoDB存

在Linux作業系統中處理檔案需要使用各種命令和技術,使開發人員能夠有效率地建立和執行檔案、程式碼、程式、腳本和其他東西。在Linux環境中,擴展名為”.a”的檔案作為靜態庫具有重要的重要性。這些程式庫在軟體開發中發揮重要作用,允許開發人員有效地管理和共享多個程式的公共功能。對於Linux環境中的有效軟體開發,了解如何建立和運行「.a」檔案至關重要。本文將介紹如何全面安裝和設定Linux「.a」文件,讓我們一起探索Linux「.a」文件的定義、用途、結構,以及建立和執行它的方法。什麼是L

在Linux系統中,可以使用下列指令來查看日誌檔案的內容:tail指令:tail指令用來顯示日誌檔案的末尾內容。它是查看最新日誌資訊的常用命令。 tail[選項][檔案名稱]常用的選項包括:-n:指定要顯示的行數,預設為10行。 -f:即時監視文件內容,並在文件更新時自動顯示新的內容。範例:tail-n20logfile.txt#顯示logfile.txt檔案的最後20行內容tail-flogfile.txt#即時監視logfile.txt檔案的更新內容head指令:head指令用於顯示記錄檔的開頭
