PHP高级特性2之文件处理
PHP高级特性二之文件处理
PHP中的文件处理也是一个相当重要的模块,这一篇的主要内容就是PHP中文件系统的简介。
文件系统用途
1. 项目处理都离不开文件处理
2. 可以用文件长时间保存数据
3. 建立缓存,在服务器中进行文件操作
文件系统函数用法详述
1.基本的判断函数
is_dir — 判断给定文件名是否是一个目录
is_file — 判断给定文件名是否为一个文件
is_executable — 判断给定文件名是否可执行
is_link — 判断给定文件名是否为一个符号连接
is_readable — 判断给定文件名是否可读
is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
is_writable — 判断给定的文件名是否可写
is_writeable — is_writable 的别名
2.文件相关信息获取
file_exists — 检查文件或目录是否存在
fileatime — 取得文件的上次访问时间
filectime — 取得文件的 inode 修改时间
filegroup — 取得文件的组
fileinode — 取得文件的 inode
filemtime — 取得文件修改时间
fileowner — 取得文件的所有者
fileperms — 取得文件的权限
filesize — 取得文件大小
filetype — 取得文件类型
下面我们写一个例子,传入文件名,打印它的详细信息。
1 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
function getFileInfo($filename){
if(!file_exists($filename)){
echo '文件'.($filename).'不存在';
return;
}
if(is_file($filename)){
echo $filename.'是一个文件';
}
if(is_dir($filename)){
echo $filename.'是一个目录';
}
if(is_executable($filename)){
echo $filename.'是可执行文件';
}else{
echo $filename.'不是可执行文件';
}
if(is_readable($filename)){
echo $filename.'是可读的';
}else{
echo $filename.'不是可读的';
}
if(is_writable($filename)){
echo $filename.'是可写入的';
}else{
echo $filename.'不是可写入的';
}
echo '文件'.$filename.'的大小是'.getFileSize(filesize($filename)).'';
echo '文件'.$filename.'的类型是'.filetype($filename).'';
echo '文件'.$filename.'的所有者是'.fileowner($filename).'';
echo '文件'.$filename.'的最后访问时间为'.getTime(fileatime($filename)).'';
echo '文件'.$filename.'的inode是'.fileinode($filename).'';
echo '文件'.$filename.'的修改时间是'.getTime(filemtime($filename)).'';
echo '文件'.$filename.'的权限是'.fileperms($filename).'';
}
function getTime($time){
return date('Y-m-d H:i:s',$time);
}
function getFileSize($size){
$dw = 'B';
if($size>=pow(2,40)){
$size=round($size/pow(2,40),2);
$dw = 'PB';
}else if($size>=pow(2,30)){
$size=round($size/pow(2,30),2);
$dw = 'TB';
}else if($size>=pow(2,20)){
$size=round($size/pow(2,20),2);
$dw = 'GB';
}else if($size>=pow(2,10)){
$size=round($size/pow(2,10),2);
$dw = 'MB';
}
return $size.$dw;
}
getFileInfo('1.php');
|
运行结果
1.php是一个文件
1.php不是可执行文件
1.php是可读的
1.php不是可写入的
文件1.php的大小是2MB
文件1.php的类型是file
文件1.php的所有者是1000
文件1.php的最后访问时间为2015-03-04 12:58:33
文件1.php的inode是536185
文件1.php的修改时间是2015-03-04 12:58:32
文件1.php的权限是33204
3.文件路径相关函数
相对路径:相对于当前目录的上级和下级目录
. 当前目录
.. 上一级目录
路径分隔符号
linux/Unix “/”
windows “\”
不管是什么操作系统PHP的目录分割符号都支技 / (Linux)
绝对路径:可以指的操作系统的根,也可以指的是存放网站的文档根目录
如果是在服务器中执行(通过PHP文件处理函数执行)路径 则 “根”指的就是操作系统的根
如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”也就指的是文档根目录
三个相关函数
basename — 返回路径中的文件名部分
dirname — 返回路径中的目录部分
pathinfo — 返回文件路径的信息
例如下面的例子
1 2
3
4
5
6
7
8
|
$url1="./aaa/bbb/index.php";
$url2="../www/yyy/login.rar";
$url3="c:/appserv/www/demo.html";
$url4="http://localhost/yyy/www.gif";
echo basename($url1);
echo basename($url2);
echo basename($url3);
echo basename($url4);
|
运行结果
index.php
login.rar
demo.html
www.gif
可以看出,basename这个函数返回的是文件的名,也就是最后一个项目。
下面我们看一下dirname的用法
1 2
3
4
5
6
7
8
|
$url1="./aaa/bbb/index.php";
$url2="../www/yyy/login.rar";
$url3="c:/appserv/www/demo.html";
$url4="http://localhost/yyy/www.gif";
echo dirname(dirname($url1));
echo dirname($url2);
echo dirname($url3);
echo dirname($url4);
|
运行结果
./aaa
../www/yyy
c:/appserv/www
http://localhost/yyy
可以发现,dirname这个函数可以多层嵌套使用,返回的就是它所在的路径,即除了最后一项之外所有的项。
另外 pathinfo的以上所有信息都可以获取到,另外还包括了文件名和扩展名
比如下面的结果
Array ( [dirname] => ../www/yyy [basename] => login.rar [extension] => rar [filename] => login )
4. 文件的创建删除修改
touch — 创建一个文件
unlink — 删除文件
rename — 重命名一个文件或目录
copy — 拷贝文件
例如下面的例子
1 2
3
4
5
|
touch("./php.apahce"); //创建文件
unlink("C:/AppServ/www/xsphp/apache.php"); //删除文件
rename("./test.txt", "d:/test2.txt"); //重命名文件
copy("cache.txt", "./cache5.txt"); //复制文件
chmod("a.txt",755); //设置文件权限
|
权限相关内容
rwx 表这个文件的拥有者 r读 w写 x执行
rwx 表这个文件的拥有者所在的组 r读 w写 x执行
rwx 其它用户对这个为文件的权限 r读 w写 x执行
文件读写
1. file_get_contents(string)
传入文件名,直接得到文件中的文本信息,返回的内容即为文件中的文本。
例如
1 2
3
4
|
$str = file_get_contents("1.txt");
echo $str;
?>
|
则直接打开了 1.txt 文件中的内容,并返回文件中的文本信息。
如果文件不存在,那么会提示
Warning: file_get_contents(2.txt): failed to open stream: No such file or directory
同样,文件还可以是远程文件,例如,参数传入 http://www.qq.com
即可以呈现腾讯网的首页内容。
缺点:不能读取指定部分的内容,一次性全部读取。
2. file_put_contents(filename,content)
写入文件,filename是写入文件的文件名,content是写入内容,返回值是成功写入的字符长度。
1 2
3
|
echo file_put_contents("2.txt",'abcd'); ?>
|
2.txt 文件如果不存在,那么则会创建这个文件并写入 abcd 这个字符串,返回 4 ,为字符串的长度。 如果文件存在,则会将文件清空,然后写入字符串,返回写入长度。
缺点:不能以追加的方式写入文件。
3.file(filename)
file是直接打开某一个文件,返回的结果是一个数组,每一行是数组的一个元素。也就是说,获取行数只需要输出数组的大小即可。例如
1 2
3
4
5
|
$str = file("1.txt");
var_dump($str);
echo count($str);
?>
|
即可得到数组形式的行内容,而且输出了行数。
缺点:不能读取指定部分的内容。
4.fopen(filename,mode)
filename是文件名,可以是路径加名,也可以是远程服务器文件。
mode是打开文件的方式
r,以只读模式打开文件
r+,除了读,还可以写入。
w, 以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则会清除原文件中所有内容,再写入(打开已有的重要文件)
w+,除了可以写用fwrite, 还可以读fread
a,以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则不清除原有文件内容,再原有文件内容的最后写入新内容,(追加)
a+,除了可以写用fwrite, 还可以读fread
b,以二进制模式打开文件(图,电影)
t,以文本模式打开文件
注意:
r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容;
w+具有读写属性,写的时候如果文件存在,会被清空,从头开始写。
返回的是一个文件资源
5.fwrite(file,content)
文件写入功能,file是文件资源,用fopen函数获取来的,content是写入内容。同 fputs 函数。
例如
1 2
3
4
5
6
7
8
9
|
php
$file = fopen("1.txt","r+");
$result = fwrite($file,"xx");
if($result){
echo "Success";
}else
echo "Failed";
}
?>
|
则从头开始写入资源,即把前两个字符设为 xx
6. fread(file,size)
读取文件指定部分的长度,file是文件资源,由fopen返回的对象,size是读取字符的长度。
例如
1 2
3
4
5
|
$file = fopen("1.txt","r");
$content = fread($file,filesize("1.txt"));
echo $content;
?>
|
不过,上述的 filesize 方法只能获取本地文件大小,对于远程文件的读取就要换一种方法了。
例如
1 2
3
4
5
6
7
8
|
$file = fopen("http://www.qq.com","r");
$str = "";
while(!feof($file)){ //判断时候到了文件结尾
$str.=fread($file,1024);
}
echo $str;
?>
|
7.fgets(file)
file是文件资源,每次读取一行。例如我们读取出腾讯首页一共有多少行。

熱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)

「你的組織要求你更改PIN訊息」將顯示在登入畫面上。當在使用基於組織的帳戶設定的電腦上達到PIN過期限制時,就會發生這種情況,在該電腦上,他們可以控制個人設備。但是,如果您使用個人帳戶設定了Windows,則理想情況下不應顯示錯誤訊息。雖然情況並非總是如此。大多數遇到錯誤的使用者使用個人帳戶報告。為什麼我的組織要求我在Windows11上更改我的PIN?可能是您的帳戶與組織相關聯,您的主要方法應該是驗證這一點。聯絡網域管理員會有所幫助!此外,配置錯誤的本機原則設定或不正確的登錄項目也可能導致錯誤。即

Windows11將清新優雅的設計帶到了最前沿;現代介面可讓您個性化和更改最精細的細節,例如視窗邊框。在本指南中,我們將討論逐步說明,以協助您在Windows作業系統中建立反映您的風格的環境。如何更改視窗邊框設定?按+開啟“設定”應用程式。 WindowsI前往個人化,然後按一下顏色設定。顏色變更視窗邊框設定視窗11「寬度=」643「高度=」500「>找到在標題列和視窗邊框上顯示強調色選項,然後切換它旁邊的開關。若要在「開始」功能表和工作列上顯示主題色,請開啟「在開始」功能表和工作列上顯示主題

預設情況下,Windows11上的標題列顏色取決於您選擇的深色/淺色主題。但是,您可以將其變更為所需的任何顏色。在本指南中,我們將討論三種方法的逐步說明,以更改它並個性化您的桌面體驗,使其具有視覺吸引力。是否可以更改活動和非活動視窗的標題列顏色?是的,您可以使用「設定」套用變更活動視窗的標題列顏色,也可以使用登錄編輯程式變更非活動視窗的標題列顏色。若要了解這些步驟,請前往下一部分。如何在Windows11中變更標題列的顏色? 1.使用「設定」應用程式按+開啟設定視窗。 WindowsI前往“個人化”,然

工作列縮圖可能很有趣,但它們也可能分散注意力或煩人。考慮到您將滑鼠懸停在該區域的頻率,您可能無意中關閉了重要視窗幾次。另一個缺點是它使用更多的系統資源,因此,如果您一直在尋找一種提高資源效率的方法,我們將向您展示如何停用它。不過,如果您的硬體規格可以處理它並且您喜歡預覽版,則可以啟用它。如何在Windows11中啟用工作列縮圖預覽? 1.使用「設定」應用程式點擊鍵並點選設定。 Windows按一下系統,然後選擇關於。點選高級系統設定。導航至“進階”選項卡,然後選擇“效能”下的“設定”。在「視覺效果」選

您是否在Windows安裝程式頁面上看到「出現問題」以及「OOBELANGUAGE」語句? Windows的安裝有時會因此類錯誤而停止。 OOBE表示開箱即用的體驗。正如錯誤提示所表示的那樣,這是與OOBE語言選擇相關的問題。沒有什麼好擔心的,你可以透過OOBE螢幕本身的漂亮註冊表編輯來解決這個問題。快速修復–1.點選OOBE應用底部的「重試」按鈕。這將繼續進行該過程,而不會再打嗝。 2.使用電源按鈕強制關閉系統。系統重新啟動後,OOBE應繼續。 3.斷開系統與網際網路的連接。在脫機模式下完成OOBE的所

在Windows11上的顯示縮放方面,我們都有不同的偏好。有些人喜歡大圖標,有些人喜歡小圖標。但是,我們都同意擁有正確的縮放比例很重要。字體縮放不良或圖像過度縮放可能是工作時真正的生產力殺手,因此您需要知道如何自訂以充分利用系統功能。自訂縮放的優點:對於難以閱讀螢幕上的文字的人來說,這是一個有用的功能。它可以幫助您一次在螢幕上查看更多內容。您可以建立僅適用於某些監視器和應用程式的自訂擴充功能設定檔。可以幫助提高低階硬體的效能。它使您可以更好地控制螢幕上的內容。如何在Windows11

螢幕亮度是使用現代計算設備不可或缺的一部分,尤其是當您長時間注視螢幕時。它可以幫助您減輕眼睛疲勞,提高易讀性,並輕鬆有效地查看內容。但是,根據您的設置,有時很難管理亮度,尤其是在具有新UI更改的Windows11上。如果您在調整亮度時遇到問題,以下是在Windows11上管理亮度的所有方法。如何在Windows11上變更亮度[10種方式解釋]單一顯示器使用者可以使用下列方法在Windows11上調整亮度。這包括使用單一顯示器的桌上型電腦系統以及筆記型電腦。讓我們開始吧。方法1:使用操作中心操作中心是訪問

Windows上的啟動過程有時會突然轉向顯示包含此錯誤代碼0xc004f069的錯誤訊息。雖然啟動程序已經聯機,但一些運行WindowsServer的舊系統可能會遇到此問題。透過這些初步檢查,如果這些檢查不能幫助您啟動系統,請跳到主要解決方案以解決問題。解決方法–關閉錯誤訊息和啟動視窗。然後,重新啟動電腦。再次從頭開始重試Windows啟動程序。修復1–從終端啟動從cmd終端啟動WindowsServerEdition系統。階段–1檢查Windows伺服器版本您必須檢查您使用的是哪種類型的W
