Heim >Backend-Entwicklung >PHP-Tutorial >Erweiterte PHP-Funktionen 2: Dateiverarbeitung

Erweiterte PHP-Funktionen 2: Dateiverarbeitung

WBOY
WBOYOriginal
2016-08-08 09:23:13853Durchsuche

Die Dateiverarbeitung in PHP ist ebenfalls ein sehr wichtiges Modul. Der Hauptinhalt dieses Artikels ist eine Einführung in das Dateisystem in PHP.

Dateisystemzwecke

1. Die Projektverarbeitung ist untrennbar mit der Dateiverarbeitung verbunden

2. Dateien können zum Speichern von Daten für einen langen Zeitraum verwendet werden

3 .Cache erstellen, Dateivorgänge auf dem Server ausführen

Detaillierte Beschreibung der Dateisystemfunktionsnutzung

1 🎜>

is_dir – Bestimmt, ob der angegebene Dateiname ein Verzeichnis ist

is_file – Bestimmt, ob der angegebene Dateiname eine Datei ist

is_executable – Bestimmt, ob der angegebene Dateiname ausführbar ist

is_link – Bestimmen Sie, ob der angegebene Dateiname ein symbolischer Link ist.

is_readable – Bestimmen Sie, ob der angegebene Dateiname lesbar ist.

is_uploaded_file – Bestimmen Sie, ob die Datei über HTTP POST hochgeladen wurde

is_writable – Bestimmen Sie, ob der angegebene

Dateiname beschreibbar ist.

is_writeable – Ein Alias ​​von is_writable

2. Erhalten Sie dateibezogene Informationen

file_exists – Überprüfen Sie, ob die Datei oder das Verzeichnis existiert.

fileatime – Rufen Sie die letzte Zugriffszeit der Datei ab.

filectime – Rufen Sie die Inode-Änderungszeit der Datei ab

filegroup – Ruft die Gruppe der Datei ab

fileinode – Ruft den Inode der Datei ab

filemtime – Ruft die Dateiänderungszeit ab

fileowner – Ruft ab der Eigentümer der Datei

fileperms – Dateiberechtigungen abrufen

filesize – Dateigröße abrufen

filetype – Dateityp abrufen

Lass uns Schreiben Sie unten ein Beispiel, übergeben Sie den Dateinamen und drucken Sie die detaillierten Informationen aus.

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

    FunktiongetFileInfo($Dateiname){

        if(!file_exists( $Dateiname)){

            echo'文件'.($Dateiname).'不存在';

            zurück;

        }

         if(is_file($filename)){

            echo$Dateiname.'是一个文件';

        }

        if(is_dir($filename)){

            echo$Dateiname.'是一个目录';

        }

        if(is_executable($filename)){

            echo$Dateiname.'是可执行文件';

        }else{

            echo$ Dateiname.'不是可执行文件';

        }

        if(is_readable($filename)){

            Echo$Dateiname.'是可读的';

        }else{

            echo $Dateiname.'不是可读的';

        }

        if(is_writable($ Dateiname)){

            echo$Dateiname.'是可写入的';

        }else{

            echo$Dateiname.'不是可写入的';

        }

Die Größe der echo' Datei '.$Dateiname.' ist '. getFileSize(filesize($filename)).'';

 echo'Der Typ von '.$Dateiname.' ist '.Dateityp($Dateiname).'';

       echoDer Eigentümer der Datei „.$Dateiname.“ ist „.Dateibesitzer ($Dateiname).'';

 Echo ' Die letzte Zugriffszeit der Datei '.$Dateiname.' ist '.getTime(fileatime( $Dateiname)).'';

           Der Inode von 🎜>echo' Datei '.$Dateiname.' ist '.fileinode( $Dateiname).'';

 echo'Datei '.$Dateiname.' ist '.getTime(filemtime( $Dateiname)).'';

 

echo' file '.$filename.' sind '.fileperms($Dateiname).'';  

}

Funktion

getTime($Zeit){         

Rückgabe

Datum('Y-m-d H:i:s',$Zeit);  

}

 

Funktion

getFileSize($size){ 

$

dw='B';  

if

($size>=pow(2,40)){                                                           >/

Leistung

( 2,40) ,2);                                                                    > }else

if($size> ;=pow(2, 30)){

            $Größe=rund($Größe/pow(2 ,30),2);

            $dw='TB';

        }elseif($size>=pow(2 ,20)){

            $Größe=rund( $Größe/Leistung(2,20),2);

            $dw='GB';

        }elseif($Größe>=Leistung(2,10)){

            $size=rund($Größe/pow(2,10),2);

            $dw ='MB';

        }

        return$size.$dw;

    }

    getFileInfo('1.php');

Laufergebnisse

1.php ist eine Datei
1.php ist keine ausführbare Datei
1.php ist lesbar
1.php ist nicht beschreibbar
Die Größe der Datei 1.php beträgt 2 MB
Der Typ der Datei 1.php ist Datei
Der Besitzer der Datei 1.php ist 1000
Datei 1. Die letzte Zugriffszeit von PHP ist 04.03.2015 12:58:33
Der Inode der Datei 1.php ist 536185
Die Änderungszeit von Datei 1.php ist 04.03.2015 12:58:32
Die Berechtigungen der Datei 1.php sind 33204

3. Dateipfadbezogene Funktionen

Relativer Pfad: relativ zum oberen und unteren Verzeichnis des aktuellen Verzeichnisses

. Aktuelles Verzeichnis
.. Vorheriges Verzeichnis

Pfadtrennzeichen

Linux/Unix „/“
Windows „ ”
Unabhängig vom Betriebssystem unterstützt das Verzeichnistrennungssymbol von PHP / (Linux)

Absoluter Pfad: Er kann sich auf das Stammverzeichnis des Betriebssystems oder auf das Stammverzeichnis des Dokuments beziehen, in dem sich das befindet Website wird gespeichert.

Wenn sie im Serverpfad ausgeführt wird (ausgeführt durch die PHP-Dateiverarbeitungsfunktion ), bezieht sich das „Stammverzeichnis“ auf das Stammverzeichnis des Betriebssystems.
Wenn die Wenn das Programm ein heruntergeladener Client ist, kann beim Zugriff auf Dateien auf dem -Server nur über Apache darauf zugegriffen werden. Das „Stammverzeichnis“ bezieht sich auch auf das Dokumentstammverzeichnis

Drei verwandte Funktionen

Basisname – Gibt den Dateinamenteil des Pfads zurück.

Verzeichnisname – Gibt den Verzeichnisteil des Pfads

zurück pathinfo – Gibt die Dateipfadinformationen zurück

Zum Beispiel das folgende Beispiel

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

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

Ergebnisse ausführen

index.php
login.rar
demo.html
www.gif

Es ist ersichtlich, dass die Funktion basename den Namen der Datei zurückgibt, also das letzte Element.
Werfen wir einen Blick auf die Verwendung von 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);

1
2
3

4
5
6

7

8

 $url1

=

"./aaa/bbb/index.php";

 

$
url2

=

"../www/yyy/login.rar"

;

 

$
url3

=

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);   //设置文件权限

"c:/appserv/www/ demo.html"; $url4= "http ://localhost/yyy/www.gif"; echo Verzeichnisname (Verzeichnisname($url1));  echo dirname($url2) ; echo dirname( $url3); echo dirname($url4);
Laufergebnisse./aaa.. /www /yyyc:/appserv/wwwhttp://localhost/yyySie können feststellen, dass die Funktion dirname in mehreren Verschachtelungsebenen verwendet werden kann , und es wird der Pfad zurückgegeben, in dem es sich befindet, also alle Elemente außer dem letzten Element. Darüber hinaus können alle oben genannten Informationen zu Pfadinformationen abgerufen werden, einschließlich Dateiname und ErweiterungZum Beispiel Folgendes Ergebnisse Array ( [dirname] => ../www/yyy [basename] => login.rar [extension] => rar [filename] => login ) 4. Dateien erstellen, löschen und ändernberühren – eine Datei erstellen Verknüpfung aufheben – eine Datei löschen umbenennen – a umbenennen Datei oder Verzeichniskopieren – Dateien kopierenZum Beispiel das folgende Beispiel
1
2
3
4
5
touch("./php.apahce"); //Datei erstellen Verknüpfung aufheben("C: /AppServ/www/xsphp/apache.php"); //Datei löschen umbenennen("./test.txt","d:/test2.txt") ;  //Datei umbenennen copy("cache.txt","./cache5.txt"); // Datei kopierenchmod(" a.txt" ,755); //Dateiberechtigungen festlegen

Berechtigungsbezogener Inhalt

rwx gibt den Besitzer dieser Datei an r lesen w schreiben x ausführen
rwx gibt die Gruppe des Besitzers dieser Datei an r lesen w Schreiben Sie x und führen Sie
rwx aus. Andere Benutzer haben Berechtigungen für diese Datei r lesen w schreiben >Geben Sie den Dateinamen ein und erhalten Sie direkt die Textinformationen in der Datei. Der zurückgegebene Inhalt ist der Text in der Datei.

Zum Beispiel

1

2
3

4

1
2
3
4

$str=file_get_contents("1.txt");

echo$str;

?>

$ str=file_get_contents("1.txt");

echo$str ;

?>

öffnet direkt den Inhalt in der 1.txt-Datei und gibt die Textinformationen in der Datei zurück.

Wenn die Datei nicht existiert, erscheint die Meldung

Warnung: file_get_contents(2.txt): Fehler beim Öffnen des Streams: Keine solche Datei oder kein solches Verzeichnis

In ähnlicher Weise kann die Datei auch eine Remote-Datei sein. Durch Übergabe der Parameter an http://www.qq.com

kann der Homepage-Inhalt von Tencent angezeigt werden.

1
2
3

echofile_put_contents("2.txt",'abcd');

?>

Nachteile: Der angegebene Teil des Inhalts kann nicht gelesen werden, sondern alles auf einmal. 2. file_put_contents(filename,content)

In die Datei schreiben, filename ist der Dateiname der geschriebenen Datei, content ist der geschriebene Inhalt und der Rückgabewert ist die Länge der Zeichen erfolgreich geschrieben.

1

2

3

1
2
3
4
5

$str=file("1.txt");

var_dump($str);

echocount($str);

?>

<🎜><🎜>echofile_put_contents("2.txt",'abcd');<🎜><🎜>?>
2 Wenn die TXT-Datei nicht vorhanden ist, wird die Datei erstellt und die Zeichenfolge abcd geschrieben und 4 zurückgegeben, was der Länge der Zeichenfolge entspricht. Wenn die Datei vorhanden ist, wird die Datei geleert, dann wird die Zeichenfolge geschrieben und die geschriebene Länge wird zurückgegeben. Nachteile: Dateien können nicht im Anhängemodus geschrieben werden. 3.file(filename)file öffnet eine Datei direkt und das zurückgegebene Ergebnis ist ein Array, und jede Zeile ist ein Element des Arrays. Mit anderen Worten: Um die Anzahl der Zeilen zu ermitteln, muss lediglich die Größe des Arrays ausgegeben werden. Zum Beispiel
1
2
3
4
5
< 🎜><🎜>$str=file("1.txt");<🎜><🎜> var_dump ($str);<🎜><🎜> echocount($str);< / span><🎜><🎜>?>

kann den Zeileninhalt in Form eines Arrays abrufen und die Anzahl der Zeilen ausgeben.

Nachteil: Der Inhalt des angegebenen Teils kann nicht gelesen werden.

4.fopen(filename,mode)

Dateiname ist der -Dateiname, der ein Pfad plus Name sein kann, oder eine Remote--Serverdatei.

Der Modus ist die Möglichkeit, eine Datei

r im schreibgeschützten Modus zu öffnen kann auch schreiben.
w, im Schreibmodus öffnen. Wenn die Datei nicht vorhanden ist, erstellen Sie die Datei und schreiben Sie den Inhalt. Wenn die Datei vorhanden ist und ursprünglich Inhalt enthält, wird der gesamte Inhalt der Originaldatei gelöscht und dann geschrieben. Vorhandene wichtige Dateien öffnen)
w, zusätzlich zum Schreiben mit fwrite können Sie auch fread
a lesen, das im schreibgeschützten Modus geöffnet wird. Wenn die Datei nicht vorhanden ist, erstellen Sie die Datei und schreiben Sie den Inhalt . Wenn die Datei vorhanden ist und Originalinhalt vorhanden ist, wird der Originaldateiinhalt nicht gelöscht und neuer Inhalt wird an das Ende des Originaldateiinhalts geschrieben (anhängen)
a , Sie können auch fread
b öffnen. Dateien (Bilder, Filme)
t im Binärmodus öffnen, Dateien

im Textmodus öffnen. Hinweis:

r verfügt über Lese- und Schreibattribute, beginnend mit dem Dateiheader. Behalten Sie den nicht überschriebenen Inhalt in der Originaldatei bei.

w verfügt über Lese- und Schreibattribute. Wenn die Datei beim Schreiben vorhanden ist, wird sie gelöscht und geschrieben von Grund auf.

gibt eine Dateiressource zurück

5.fwrite(file,content)

Dateischreibfunktion, Datei ist eine Dateiressource, verwenden Sie fopen

Erhalten von die Funktion, Inhalt ist der geschriebene Inhalt. Identisch mit der fputs-Funktion.

Zum Beispiel

1

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";

}

?>

2
3
4

5
6

7

8

9

1

2

3

4

5

$file=fopen("1.txt","r");

$content=fread($file,filesize("1.txt"));

echo$content;

?>

php$file =fopen("1.txt","r "); $result = fwrite($file,"xx"); if($result) { echo"Erfolg"; }sonstEcho"Fehlgeschlagen";}?> Schreiben Sie dann die Ressource von Grund auf neu ist, Die ersten beiden Zeichen sind auf xx6 gesetzt. fread(file,size) liest die Länge des angegebenen Teils der Datei, der Dateiressource, die zurückgegeben wird von fopen, und size ist die gelesene Länge der Zeichen. Zum Beispiel
1
2
3
4
5
< ?php<🎜><🎜><🎜><🎜><🎜>$file<🎜><🎜>=<🎜><🎜>fopen<🎜>(<🎜>"1.txt"<🎜>,< 🎜 >"r"<🎜>)<🎜>;<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>< 🎜 ><🎜><🎜><🎜>$content<🎜><🎜>=<🎜><🎜>fread<🎜>(<🎜>$file<🎜>,<🎜>filesize<🎜>(<🎜 > "1.txt"<🎜>)<🎜>)<🎜>;<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜 > <🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>echo<🎜><🎜>$content<🎜>;<🎜><🎜><🎜><🎜> < 🎜><🎜><🎜><🎜>?>

Die obige Dateigrößenmethode kann jedoch nur die lokale Dateigröße ermitteln, und zum Lesen entfernter Dateien ist eine andere Methode erforderlich.

Zum Beispiel

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;

?>

1
2
3

4
5

6
7
8

1
2
3
4
5
6
7
8
9
10

 

$file=fopen("http://www.qq.com","r");

$str="";

$count=0;

while(!feof($file)){

$str.=fgets($file);

$count ;

}

echo$count;

?>

<🎜><🎜>$file=fopen("http:// www .qq.com","r");<🎜><🎜>$str=" " ;<🎜><🎜>while( < span>!feof($file)){ //Beurteilen Sie das Ende der Datei< /span><🎜><🎜> $str.=fread($file,1024); <🎜><🎜>}< /span ><🎜><🎜>echo$str; <🎜><🎜>?>
7 .fgets (Datei)Datei ist eine Dateiressource, die jeweils eine Zeile liest. Wir lesen zum Beispiel, wie viele Zeilen es auf der Homepage von Tencent gibt.
12
3
4
5
6
7
8
9
10
<🎜><🎜> $file=fopen("http://www.qq.com","r") <🎜><🎜>$str="";< /span><🎜><🎜>$count=0;<🎜><🎜>while(!feof( $file)){< /span><🎜><🎜>$str.=fgets($file); <🎜><🎜>$count ;<🎜><🎜> }<🎜><🎜>echo$count;<🎜><🎜>?>

gibt das Ergebnis 8893 aus. Wir können die Quelldatei überprüfen, um zu sehen, wie viele Zeilen sie insgesamt enthält, und sie überprüfen.

7.fgetc(file)

Es ist der fgets-Methode sehr ähnlich. Datei ist eine Dateiressource und liest jedes Mal Zeichen. Wir lesen zum Beispiel, wie viele Zeichen es auf der Homepage von Tencent gibt.

1
2
3
4
5
6
7
8
9
10

$file=fopen("http://www.qq.com","r");

$str="";

$count=0;

while(!feof($file)){

$str.=fgetc($file);

$count ;

}

echo$count;

?>

12
3
4
5
6
7
8
9
10
<🎜><🎜> $file=fopen("http://www.qq.com","r") <🎜><🎜>$str="";< /span><🎜><🎜>$count=0;<🎜><🎜>while(!feof( $file)){< /span><🎜><🎜>$str.=fgetc($file); <🎜><🎜>$count ;<🎜><🎜> }<🎜><🎜>echo$count;<🎜><🎜>?>

Der obige Code gibt alle Zeichen aus.

8.ftell(file)

ftell gibt die Zeigerposition der aktuell gelesenen Datei zurück, file ist die Dateiressource und das von fopen zurückgegebene Objekt.

9.fseek(file,offset,whence)

file

Der Dateisystemzeiger ist eine Ressource, die normalerweise von fopen() erstellt wird.

Offset

Offset.

Um an die Position vor dem Ende der Datei zu gelangen, übergeben Sie einen negativen Wert für Offset und setzen Sie wherece auf SEEK_END.

whherce

SEEK_SET – Position gleich den Offset-Bytes setzen.

SEEK_CUR – Setzt die Position auf die aktuelle Position plus Offset.

SEEK_END – Setzt die Position auf das Ende der Datei plus Offset.

10.rewind($file)

Zurück zum Dateikopf: Datei ist eine Dateiressource

Zum Beispiel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

php

$file=fopen("1.txt", "r");

echoftell($file)."
"; //Zeigerposition vor dem Lesen ausgeben

echofread($file,10)."
";//10 Zeichen lesen, Zeiger um 10 Einheiten bewegen

echoftell($file)."
";//Ausgabe der aktuellen Zeigerposition nach dem Lesen

fseek($file, 20,SEEK_CUR);//Der aktuelle Zeiger bewegt sich um 20 Einheiten vorwärts

echoftell($file )."
";//Gib die Position des Zeigers nach der Bewegung aus

echofread($file ,10)."
";//Geben Sie die gelesenen 10 Zeichen aus

Echoftell($file)."
";//Gib den Zeiger aus, nachdem 10 Zeichen gelesen wurden. Standort

fseek ($file,-20,SEEK_END);//Der Zeiger bewegt sich zum Ende von die Datei Die ersten 20 Zeichen

echoftell($file)."
";/ /Geben Sie die Position des Zeigers nach der Bewegung aus

echofread($file,10)."
" ;//Geben Sie die 20 Zeichen am Ende der Datei aus

echoftell($file)."< br>";//Gib die Position des Zeigers nach dem Lesen von 10 Zeichen aus

zurückspulen($file);//Antworten Gehe zum Kopf der Datei

echoftell($file)."
"; //Gib die Position des Zeigers nach der Bewegung aus

?>

Laufergebnis:

0
cuiqingcai
10
30
uiqingcai.
40
374
i.comcuiqi
384
0

11.flock(file,operation[,wouldblock])

file

Dateiressourcenzeiger, bei dem es sich um eine Ressource (Ressource) handelt, die normalerweise von fopen() erstellt wird.

operation

operation kann einer der folgenden Werte sein:

LOCK_SH erwirbt die gemeinsame Sperre (Leseprogramm).

LOCK_EX erwirbt eine exklusive Sperre (das Schreibprogramm.

LOCK_UN gibt die Sperre frei (ob gemeinsam oder exklusiv).

Wenn Sie flock() nicht möchten Wird im gesperrten Zustand ausgeführt. Wenn blockiert, ist es LOCK_NB (noch nicht unter Windows unterstützt).

Wenn die Sperre blockieren würde (im Fall des EWOULDBLOCK-Fehlercodes), ist das optionale Dritte Parameter wird auf TRUE gesetzt (nicht unterstützt unter Windows)

Zum Beispiel

1

2

1
2
3
4
5
6
7

php

$file=fopen("1.txt","a");

if(flock($file,LOCK_EX)){

fwrite($file,"xxx");

flock($file,LOCK_UN);

}

?>

3
4
5

6
7

php<🎜> <🎜><🎜><🎜><🎜><🎜>$file<🎜><🎜>=<🎜><🎜>fopen<🎜>(<🎜>"1.txt"< 🎜>,<🎜> "a"<🎜>)<🎜>;<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜> <🎜><🎜> <🎜><🎜><🎜>if<🎜>(<🎜>flock<🎜>(<🎜>$file<🎜>,<🎜>LOCK_EX<🎜>)<🎜>)< 🎜>{<🎜> <🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>fwrite< 🎜>(<🎜> $file<🎜>,<🎜>"xxx"<🎜>)<🎜>;<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜> <🎜><🎜> <🎜><🎜>Herde<🎜>(<🎜>$file<🎜>,<🎜>LOCK_UN<🎜>)<🎜>;<🎜><🎜><🎜><🎜> <🎜><🎜> <🎜><🎜><🎜><🎜><🎜><🎜>}<🎜><🎜><🎜><🎜><🎜>?> Das Obige hat die erweiterte PHP-Funktion 2 eingeführt: Dateiverarbeitung, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn