Heim  >  Artikel  >  Backend-Entwicklung  >  (Fortgeschritten) Häufig verwendete Dateioperationsfunktionen in PHP

(Fortgeschritten) Häufig verwendete Dateioperationsfunktionen in PHP

黄舟
黄舟Original
2017-02-06 10:08:121211Durchsuche

Im Folgenden sind PHP-Dateioperationsfunktionen aufgeführt. Das ist natürlich nur ein Teil davon, es gibt noch viele weitere, die ich nicht aufgelistet habe.

1. Parse-Pfad:

1 Ruft den Dateinamen ab:

basename();
gibt eine Zeichenfolge mit dem vollständigen Pfad zu einer Datei zurück. Diese Funktion gibt zurück der Basisdateiname. Wenn der Dateiname mit einem Suffix endet, wird dieser Teil ebenfalls entfernt.
zB:

$path = "/home/httpd/html/index.php";
$file = basename($path,".php"); // $file is set to "index"

2 Rufen Sie den Verzeichnisteil ab:
dirname();
gibt ein Verzeichnis an, das den vollständigen Pfad zu einer Dateizeichenfolge enthält , diese Funktion gibt den Verzeichnisnamen zurück, nachdem der Dateiname entfernt wurde.
zB:

$path = "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"

3 Holen Sie sich das pfadassoziative Array
pathinfo();
Rufen Sie die drei Teile eines angegebenen Pfads ab: Verzeichnisname , Basisname, Erweiterung.
zB:

$pathinfo = pathinfo("www/test/index.html");
var_dump($pathinfo);
// $path['dirname']
$path['basename']
$path['extenssion']


2. Dateityp
1.
Gibt den Dateityp zurück. Mögliche Werte sind Fifo, Char, Dir, Block, Link, File und Unknown.
zB:

echo filetype('/etc/passwd'); // file
echo filetype('/etc/');        // dir


3. Holen Sie sich eine Reihe nützlicher Informationen für eine bestimmte Datei (sehr nützlich)

1. fstat();
Bestanden Der geöffnete Dateizeiger ruft die Dateiinformationen ab.
Ruft die statistischen Informationen der Datei ab, die vom Dateizeigerhandle geöffnet wurde. Diese Funktion ähnelt der Funktion stat(), außer dass sie mit einem Zeiger auf eine geöffnete Datei und nicht mit einem Dateinamen arbeitet.
zB:

// 打开文件
$fp = fopen("/etc/passwd", "r");
// 取得统计信息
$fstat = fstat($fp);
// 关闭文件
fclose($fp);
// 只显示关联数组部分
print_r(array_slice($fstat, 13));

2. stat()
Erhalten Sie die statistischen Informationen der durch den Dateinamen angegebenen Datei (analog zu fstat())

4. Berechnen Sie die Größe
1. filesize()
Gibt die Anzahl der Bytes der Dateigröße zurück. Wenn ein Fehler auftritt, wird FALSE zurückgegeben und ein Fehler der Stufe E_WARNING generiert.
zB:

// 输出类似:somefile.txt: 1024 bytes
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';


2. disk_free_space()
Ermitteln Sie den freien Speicherplatz (Byteeinheiten) der Festplattenpartition, auf der sich das Verzeichnis befindet
zB

// $df 包含根目录下可用的字节数
$df = disk_free_space("/");
//在 Windows 下:
disk_free_space("C:");
disk_free_space("D:");


3. disk_total_space()
Gibt die gesamte Festplattengröße eines Verzeichnisses zurück
z. B.: (wie oben, ersetzen Sie die Funktion)

Eine andere: Wenn Sie eine Verzeichnisgröße berechnen müssen, können Sie eine rekursive Funktion schreiben, um

Code

function dir_size($dir){
$dir_size = 0;
if($dh = @opendir($dir)){
while(($filename = readdir($dh)) != false){
if($filename !='.' and $filename !='..'){
     if(is_file($dir.'/'.$filename)){
$dir_size +=filesize($dir.'/'.$filename);
}else if(is_dir($dir.'/'.$filename)){
      $dir_size +=dir_size($dir.'/'.$filename);
}
}
                   }#end while
            }# end opendir
@closedir($dh);
return $dir_size;
} #end function

5 zu implementieren
1. fileatime(): letzte Zugriffszeit
2. filectime(): letzte Änderungszeit (Änderung beliebiger Daten)
3. filemtime(): letzte Änderungszeit (bezieht sich nur auf Inhaltsänderungen)

6. Datei-E/A-Operationen

1. Eine Datei oder URL öffnen

Modusbeschreibung
'r ' Im schreibgeschützten Modus öffnen, den Dateizeiger auf den Dateiheader richten.
'r+' Im Lese-/Schreibmodus öffnen und den Dateizeiger auf den Dateikopf verweisen.
'w' aktiviert den Schreibmodus, zeigt den Dateizeiger auf den Dateiheader und kürzt die Dateigröße auf Null. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'w+' Öffnen Sie im Lese-/Schreibmodus, zeigen Sie mit dem Dateizeiger auf den Dateiheader und kürzen Sie die Dateigröße auf Null. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'a' öffnet sich im Schreibmodus und zeigt den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'a+' Öffnen Sie im Lese-/Schreibmodus und zeigen Sie mit dem Dateizeiger auf das Ende der Datei. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'x' erstellt und öffnet zum Schreiben, wobei der Dateizeiger auf den Dateikopf zeigt. Wenn die Datei bereits vorhanden ist, schlägt der Aufruf von fopen() fehl und gibt FALSE zurück.
'x+' wird erstellt und zum Lesen und Schreiben geöffnet, wobei der Dateizeiger auf den Dateikopf zeigt. Wenn die Datei bereits existiert, schlägt der Aufruf von fopen() fehl und gibt FALSE zurück
eg:

$handle = fopen("/home/rasmus/file.txt", "r");

2. Datei – Liest die gesamte Datei in ein Array (diese Funktion ist sehr nützlich)
Gleich wie file_get_contents(), außer dass file() die Datei als ein Array behandelt array Array zurückgegeben. Jede Zelle im Array ist eine entsprechende Zeile in der Datei, einschließlich Zeilenumbrüchen. Bei einem Fehler gibt file() FALSE zurück.
zB:

Code

$lines = file('http://www.example.com/');
// 在数组中循环,显示 HTML 的源文件并加上行号。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode(&#39;&#39;, file (&#39;http://www.example.com/&#39;));


3. fgets – Liest eine Zeile aus dem Dateizeiger
vom Handle Liest eine Zeile aus der Datei, auf die verwiesen wird, und gibt eine Zeichenfolge mit einer Länge von bis zu 1 Byte zurück. Stoppt, wenn ein Zeilenumbruchzeichen (im Rückgabewert enthalten), ein EOF oder eine Länge von 1 Byte gelesen wurde (je nachdem, was zuerst eintritt). Wenn die Länge nicht angegeben ist, beträgt sie standardmäßig 1 KB oder 1024 Byte.
zB:

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}

4. fgetss – Eine Zeile aus dem Dateizeiger lesen und HTML-Tags herausfiltern
ist dasselbe wie fgets() , außer fgetss versucht nur, jegliches HTML- und PHP-Markup aus dem gelesenen Text zu entfernen.

Mit dem optionalen dritten Parameter können Sie angeben, welche Tags nicht entfernt werden sollen


Andere: Vorgänge im Verzeichnis:
1. Öffnen Sie das Verzeichnishandle , Öffnet ein Verzeichnishandle, das in nachfolgenden Aufrufen von closeir(), readdir() und rewinddir() verwendet werden kann.
2. readdir – Liest den Eintrag aus dem Verzeichnishandle und gibt den Dateinamen der nächsten Datei im Verzeichnis zurück. Dateinamen werden der Reihe nach im Dateisystem zurückgegeben.
zB:

Code

// 注意在 4.0.0-RC2 之前不存在 !== 运算符
if ($handle = opendir(&#39;/path/to/files&#39;)) {
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. Dateien und Verzeichnisse im angegebenen Pfad auflisten ( Sehr nützlich), gibt ein Array zurück, das die Dateien und Verzeichnisse im Verzeichnis enthält.
Die Standardsortierreihenfolge ist aufsteigend alphabetisch. Wenn der optionale Parameter sorting_order verwendet wird (auf 1 gesetzt), erfolgt die Sortierung in absteigender alphabetischer Reihenfolge.
zB:

$dir    = &#39;/tmp&#39;;
$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


以上就是(进阶篇) PHP常用的文件操作函数的内容,更多相关内容请关注PHP中文网(www.php.cn)!


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