PHP高級(jí)特性2之文件處理
Jun 13, 2016 pm 12:21 PM
PHP高級(jí)特性二之文件處理
PHP中的文件處理也是一個(gè)相當(dāng)重要的模塊,這一篇的主要內(nèi)容就是PHP中文件系統(tǒng)的簡(jiǎn)介。
文件系統(tǒng)用途
1. 項(xiàng)目處理都離不開(kāi)文件處理
2. 可以用文件長(zhǎng)時(shí)間保存數(shù)據(jù)
3. 建立緩存,在服務(wù)器中進(jìn)行文件操作
文件系統(tǒng)函數(shù)用法詳述
1.基本的判斷函數(shù)
is_dir?— 判斷給定文件名是否是一個(gè)目錄
is_file?— 判斷給定文件名是否為一個(gè)文件
is_executable?— 判斷給定文件名是否可執(zhí)行
is_link?— 判斷給定文件名是否為一個(gè)符號(hào)連接
is_readable?— 判斷給定文件名是否可讀
is_uploaded_file?— 判斷文件是否是通過(guò) HTTP POST 上傳的
is_writable?— 判斷給定的文件名是否可寫
is_writeable?— is_writable 的別名
2.文件相關(guān)信息獲取
file_exists?— 檢查文件或目錄是否存在
fileatime?— 取得文件的上次訪問(wèn)時(shí)間
filectime?— 取得文件的 inode 修改時(shí)間
filegroup?— 取得文件的組
fileinode?— 取得文件的 inode
filemtime?— 取得文件修改時(shí)間
fileowner?— 取得文件的所有者
fileperms?— 取得文件的權(quán)限
filesize?— 取得文件大小
filetype?— 取得文件類型
下面我們寫一個(gè)例子,傳入文件名,打印它的詳細(xì)信息。
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.'是一個(gè)文件';
????????}
?
????????if(is_dir($filename)){
????????????echo $filename.'是一個(gè)目錄';
????????}
?
????????if(is_executable($filename)){
????????????echo $filename.'是可執(zhí)行文件';
????????}else{
????????????echo $filename.'不是可執(zhí)行文件';
????????}
?
????????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.'的最后訪問(wèn)時(shí)間為'.getTime(fileatime($filename)).'';
????????echo '文件'.$filename.'的inode是'.fileinode($filename).'';
????????echo '文件'.$filename.'的修改時(shí)間是'.getTime(filemtime($filename)).'';
????????echo '文件'.$filename.'的權(quán)限是'.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');
|
運(yùn)行結(jié)果
1.php是一個(gè)文件
1.php不是可執(zhí)行文件
1.php是可讀的
1.php不是可寫入的
文件1.php的大小是2MB
文件1.php的類型是file
文件1.php的所有者是1000
文件1.php的最后訪問(wèn)時(shí)間為2015-03-04 12:58:33
文件1.php的inode是536185
文件1.php的修改時(shí)間是2015-03-04 12:58:32
文件1.php的權(quán)限是33204
?3.文件路徑相關(guān)函數(shù)
相對(duì)路徑:相對(duì)于當(dāng)前目錄的上級(jí)和下級(jí)目錄
. 當(dāng)前目錄
.. 上一級(jí)目錄
路徑分隔符號(hào)
linux/Unix “/”
windows “\”
不管是什么操作系統(tǒng)PHP的目錄分割符號(hào)都支技 / (Linux)
絕對(duì)路徑:可以指的操作系統(tǒng)的根,也可以指的是存放網(wǎng)站的文檔根目錄
如果是在服務(wù)器中執(zhí)行(通過(guò)PHP文件處理函數(shù)執(zhí)行)路徑 則 “根”指的就是操作系統(tǒng)的根
如果程序是下載的客戶端,再訪問(wèn)服務(wù)器中的文件時(shí),只有通過(guò)Apache訪問(wèn),“根”也就指的是文檔根目錄
三個(gè)相關(guān)函數(shù)
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);
|
運(yùn)行結(jié)果
index.php
login.rar
demo.html
www.gif
可以看出,basename這個(gè)函數(shù)返回的是文件的名,也就是最后一個(gè)項(xiàng)目。
下面我們看一下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);
|
運(yùn)行結(jié)果
./aaa
../www/yyy
c:/appserv/www
http://localhost/yyy
可以發(fā)現(xiàn),dirname這個(gè)函數(shù)可以多層嵌套使用,返回的就是它所在的路徑,即除了最后一項(xiàng)之外所有的項(xiàng)。
另外 pathinfo的以上所有信息都可以獲取到,另外還包括了文件名和擴(kuò)展名
比如下面的結(jié)果
Array ( [dirname] => ../www/yyy [basename] => login.rar [extension] => rar [filename] => login )
4. 文件的創(chuàng)建刪除修改
touch?— 創(chuàng)建一個(gè)文件
unlink?— 刪除文件
rename?— 重命名一個(gè)文件或目錄
copy?—?拷貝文件
例如下面的例子
1 2
3
4
5
|
touch("./php.apahce"); //創(chuàng)建文件
unlink("C:/AppServ/www/xsphp/apache.php");??//刪除文件
rename("./test.txt", "d:/test2.txt");????//重命名文件
copy("cache.txt", "./cache5.txt");?? //復(fù)制文件
chmod("a.txt",755);?? //設(shè)置文件權(quán)限
|
權(quán)限相關(guān)內(nèi)容
rwx 表這個(gè)文件的擁有者 r讀 w寫 x執(zhí)行
rwx 表這個(gè)文件的擁有者所在的組 r讀 w寫 x執(zhí)行
rwx 其它用戶對(duì)這個(gè)為文件的權(quán)限 r讀 w寫 x執(zhí)行
文件讀寫
1. file_get_contents(string)
傳入文件名,直接得到文件中的文本信息,返回的內(nèi)容即為文件中的文本。
例如
1 2
3
4
|
$str = file_get_contents("1.txt");
echo $str;
?>
|
則直接打開(kāi)了 1.txt 文件中的內(nèi)容,并返回文件中的文本信息。
如果文件不存在,那么會(huì)提示
Warning: file_get_contents(2.txt): failed to open stream: No such file or directory
同樣,文件還可以是遠(yuǎn)程文件,例如,參數(shù)傳入 http://www.qq.com
即可以呈現(xiàn)騰訊網(wǎng)的首頁(yè)內(nèi)容。
缺點(diǎn):不能讀取指定部分的內(nèi)容,一次性全部讀取。
2. file_put_contents(filename,content)
寫入文件,filename是寫入文件的文件名,content是寫入內(nèi)容,返回值是成功寫入的字符長(zhǎng)度。
1 2
3
|
echo file_put_contents("2.txt",'abcd'); ?>
|
2.txt 文件如果不存在,那么則會(huì)創(chuàng)建這個(gè)文件并寫入 abcd 這個(gè)字符串,返回 4 ,為字符串的長(zhǎng)度。 如果文件存在,則會(huì)將文件清空,然后寫入字符串,返回寫入長(zhǎng)度。
缺點(diǎn):不能以追加的方式寫入文件。
3.file(filename)
file是直接打開(kāi)某一個(gè)文件,返回的結(jié)果是一個(gè)數(shù)組,每一行是數(shù)組的一個(gè)元素。也就是說(shuō),獲取行數(shù)只需要輸出數(shù)組的大小即可。例如
1 2
3
4
5
|
$str = file("1.txt");
var_dump($str);
echo count($str);
?>
|
即可得到數(shù)組形式的行內(nèi)容,而且輸出了行數(shù)。
缺點(diǎn):不能讀取指定部分的內(nèi)容。
4.fopen(filename,mode)
filename是文件名,可以是路徑加名,也可以是遠(yuǎn)程服務(wù)器文件。
mode是打開(kāi)文件的方式
r,以只讀模式打開(kāi)文件
r+,除了讀,還可以寫入。
w, 以只寫的方式打開(kāi),如果文件不存在,則創(chuàng)建這個(gè)文件,并寫放內(nèi)容,如果文件存在,并原來(lái)有內(nèi)容,則會(huì)清除原文件中所有內(nèi)容,再寫入(打開(kāi)已有的重要文件)
w+,除了可以寫用fwrite, 還可以讀fread
a,以只寫的方式打開(kāi),如果文件不存在,則創(chuàng)建這個(gè)文件,并寫放內(nèi)容,如果文件存在,并原來(lái)有內(nèi)容,則不清除原有文件內(nèi)容,再原有文件內(nèi)容的最后寫入新內(nèi)容,(追加)
a+,除了可以寫用fwrite, 還可以讀fread
b,以二進(jìn)制模式打開(kāi)文件(圖,電影)
t,以文本模式打開(kāi)文件
注意:
r+具有讀寫屬性,從文件頭開(kāi)始寫,保留原文件中沒(méi)有被覆蓋的內(nèi)容;
w+具有讀寫屬性,寫的時(shí)候如果文件存在,會(huì)被清空,從頭開(kāi)始寫。
返回的是一個(gè)文件資源
5.fwrite(file,content)
文件寫入功能,file是文件資源,用fopen函數(shù)獲取來(lái)的,content是寫入內(nèi)容。同 fputs 函數(shù)。
例如
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";
}
?>
|
則從頭開(kāi)始寫入資源,即把前兩個(gè)字符設(shè)為 xx
6. fread(file,size)
讀取文件指定部分的長(zhǎng)度,file是文件資源,由fopen返回的對(duì)象,size是讀取字符的長(zhǎng)度。
例如
1 2
3
4
5
|
$file = fopen("1.txt","r");
$content = fread($file,filesize("1.txt"));
echo $content;
?>
|
不過(guò),上述的 filesize 方法只能獲取本地文件大小,對(duì)于遠(yuǎn)程文件的讀取就要換一種方法了。
例如
1 2
3
4
5
6
7
8
|
$file = fopen("http://www.qq.com","r");
$str = "";
while(!feof($file)){ ?//判斷時(shí)候到了文件結(jié)尾
$str.=fread($file,1024);
}
echo $str;
?>
|
?
7.fgets(file)
file是文件資源,每次讀取一行。例如我們讀取出騰訊首頁(yè)一共有多少行。

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Windows 11 bringt frisches und elegantes Design in den Vordergrund; die moderne Benutzeroberfl?che erm?glicht es Ihnen, feinste Details, wie zum Beispiel Fensterr?nder, zu personalisieren und zu ?ndern. In diesem Leitfaden besprechen wir Schritt-für-Schritt-Anleitungen, die Ihnen dabei helfen, eine Umgebung zu erstellen, die Ihrem Stil im Windows-Betriebssystem entspricht. Wie ?ndere ich die Fensterrahmeneinstellungen? Drücken Sie +, um die Einstellungen-App zu ?ffnen. WindowsIch gehe zu Personalisierung und klicke auf Farbeinstellungen. Farb?nderung Fensterr?nder Einstellungen Fenster 11" Breite="643" H?he="500" > Suchen Sie die Option Akzentfarbe auf Titelleiste und Fensterr?ndern anzeigen und schalten Sie den Schalter daneben um. Um Akzentfarben im Startmenü und in der Taskleiste anzuzeigen Um die Designfarbe im Startmenü und in der Taskleiste anzuzeigen, aktivieren Sie ?Design im Startmenü und in der Taskleiste anzeigen“.

Auf dem Anmeldebildschirm wird die Meldung ?Ihre Organisation hat Sie gebeten, Ihre PIN zu ?ndern“ angezeigt. Dies geschieht, wenn das PIN-Ablauflimit auf einem Computer erreicht wird, der organisationsbasierte Kontoeinstellungen verwendet und die Kontrolle über pers?nliche Ger?te hat. Wenn Sie Windows jedoch über ein pers?nliches Konto einrichten, sollte die Fehlermeldung im Idealfall nicht erscheinen. Obwohl dies nicht immer der Fall ist. Die meisten Benutzer, die auf Fehler sto?en, melden dies über ihre pers?nlichen Konten. Warum fordert mich meine Organisation auf, meine PIN unter Windows 11 zu ?ndern? Es ist m?glich, dass Ihr Konto mit einer Organisation verknüpft ist. Ihr prim?rer Ansatz sollte darin bestehen, dies zu überprüfen. Die Kontaktaufnahme mit Ihrem Domain-Administrator kann hilfreich sein! Darüber hinaus k?nnen falsch konfigurierte lokale Richtlinieneinstellungen oder falsche Registrierungsschlüssel Fehler verursachen. Im Augenblick

Standardm??ig h?ngt die Farbe der Titelleiste unter Windows 11 vom gew?hlten Dunkel-/Hell-Design ab. Sie k?nnen es jedoch in jede gewünschte Farbe ?ndern. In diesem Leitfaden besprechen wir Schritt-für-Schritt-Anleitungen für drei M?glichkeiten, wie Sie Ihr Desktop-Erlebnis ?ndern und personalisieren k?nnen, um es optisch ansprechend zu gestalten. Ist es m?glich, die Farbe der Titelleiste von aktiven und inaktiven Fenstern zu ?ndern? Ja, Sie k?nnen die Farbe der Titelleiste aktiver Fenster mit der App ?Einstellungen“ ?ndern, oder Sie k?nnen die Farbe der Titelleiste inaktiver Fenster mit dem Registrierungseditor ?ndern. Um diese Schritte zu lernen, fahren Sie mit dem n?chsten Abschnitt fort. Wie ?ndere ich die Farbe der Titelleiste in Windows 11? 1. Drücken Sie in der App ?Einstellungen“ +, um das Einstellungsfenster zu ?ffnen. WindowsIch gehe zu ?Personalisierung“ und dann

Miniaturansichten in der Taskleiste k?nnen Spa? machen, aber auch ablenken oder st?ren. Wenn man bedenkt, wie oft Sie mit der Maus über diesen Bereich fahren, haben Sie m?glicherweise ein paar Mal versehentlich wichtige Fenster geschlossen. Ein weiterer Nachteil besteht darin, dass es mehr Systemressourcen verbraucht. Wenn Sie also nach einer M?glichkeit suchen, ressourceneffizienter zu arbeiten, zeigen wir Ihnen, wie Sie es deaktivieren k?nnen. Wenn Ihre Hardware-Spezifikationen jedoch dafür geeignet sind und Ihnen die Vorschau gef?llt, k?nnen Sie sie aktivieren. Wie aktiviere ich die Miniaturvorschau der Taskleiste in Windows 11? 1. Tippen Sie in der App ?Einstellungen“ auf die Taste und klicken Sie auf ?Einstellungen“. Klicken Sie unter Windows auf ?System“ und w?hlen Sie ?Info“. Klicken Sie auf Erweiterte Systemeinstellungen. Navigieren Sie zur Registerkarte ?Erweitert“ und w?hlen Sie unter ?Leistung“ die Option ?Einstellungen“ aus. W?hlen Sie ?Visuelle Effekte“

Wird auf der Windows Installer-Seite ?Ein Problem ist aufgetreten“ zusammen mit der Anweisung ?OOBELANGUAGE“ angezeigt? Aufgrund solcher Fehler bricht die Installation von Windows manchmal ab. OOBE bedeutet Out-of-the-Box-Erlebnis. Wie aus der Fehlermeldung hervorgeht, handelt es sich hierbei um ein Problem im Zusammenhang mit der OOBE-Sprachauswahl. Sie müssen sich keine Sorgen machen, Sie k?nnen dieses Problem durch eine geschickte Bearbeitung der Registrierung über den OOBE-Bildschirm selbst l?sen. Schnelll?sung – 1. Klicken Sie unten in der OOBE-App auf die Schaltfl?che ?Wiederholen“. Dadurch wird der Prozess ohne weitere Probleme fortgesetzt. 2. Verwenden Sie den Netzschalter, um das Herunterfahren des Systems zu erzwingen. Nach dem Neustart des Systems sollte OOBE fortgesetzt werden. 3. Trennen Sie das System vom Internet. Schlie?en Sie alle Aspekte von OOBE im Offline-Modus ab

Wir alle haben unterschiedliche Vorlieben, wenn es um die Anzeigeskalierung unter Windows 11 geht. Manche Leute m?gen gro?e Symbole, andere m?gen kleine Symbole. Wir sind uns jedoch alle einig, dass die richtige Skalierung wichtig ist. Eine schlechte Schriftartenskalierung oder eine überskalierung von Bildern kann bei der Arbeit ein echter Produktivit?tskiller sein. Sie müssen daher wissen, wie Sie sie anpassen k?nnen, um die F?higkeiten Ihres Systems optimal zu nutzen. Vorteile des benutzerdefinierten Zooms: Dies ist eine nützliche Funktion für Personen, die Schwierigkeiten haben, Text auf dem Bildschirm zu lesen. Es hilft Ihnen, mehr gleichzeitig auf dem Bildschirm zu sehen. Sie k?nnen benutzerdefinierte Erweiterungsprofile erstellen, die nur für bestimmte Monitore und Anwendungen gelten. Kann dazu beitragen, die Leistung von Low-End-Hardware zu verbessern. Dadurch haben Sie mehr Kontrolle darüber, was auf Ihrem Bildschirm angezeigt wird. So verwenden Sie Windows 11

Die Bildschirmhelligkeit ist ein wesentlicher Bestandteil der Nutzung moderner Computerger?te, insbesondere wenn Sie über einen l?ngeren Zeitraum auf den Bildschirm schauen. Es hilft Ihnen, die Belastung Ihrer Augen zu reduzieren, die Lesbarkeit zu verbessern und Inhalte einfach und effizient anzuzeigen. Abh?ngig von Ihren Einstellungen kann es jedoch manchmal schwierig sein, die Helligkeit zu verwalten, insbesondere unter Windows 11 mit den neuen ?nderungen an der Benutzeroberfl?che. Wenn Sie Probleme beim Anpassen der Helligkeit haben, finden Sie hier alle M?glichkeiten, die Helligkeit unter Windows 11 zu verwalten. So ?ndern Sie die Helligkeit unter Windows 11 [10 M?glichkeiten erkl?rt] Benutzer eines einzelnen Monitors k?nnen die folgenden Methoden verwenden, um die Helligkeit unter Windows 11 anzupassen. Hierzu z?hlen sowohl Desktop-Systeme mit einem einzelnen Monitor als auch Laptops. Lasst uns beginnen. Methode 1: Verwenden Sie das Action Center. Das Action Center ist zug?nglich

Der Aktivierungsprozess unter Windows nimmt manchmal eine pl?tzliche Wendung und zeigt eine Fehlermeldung mit diesem Fehlercode 0xc004f069 an. Obwohl der Aktivierungsprozess online erfolgt, kann dieses Problem bei einigen ?lteren Systemen mit Windows Server auftreten. Führen Sie diese ersten Prüfungen durch. Wenn sie Ihnen bei der Aktivierung Ihres Systems nicht weiterhelfen, fahren Sie mit der Hauptl?sung fort, um das Problem zu beheben. Problemumgehung – Schlie?en Sie die Fehlermeldung und das Aktivierungsfenster. Starten Sie dann Ihren Computer neu. Wiederholen Sie den Windows-Aktivierungsprozess noch einmal von Grund auf. Fix 1 – Aktivierung über das Terminal. Aktivieren Sie das Windows Server Edition-System über das CMD-Terminal. Stufe – 1 überprüfen Sie die Windows Server-Version. Sie müssen überprüfen, welchen W-Typ Sie verwenden
