Maison  >  Article  >  développement back-end  >  Quelles sont les fonctions d'exploitation des fichiers PHP ? Résumé des fonctions courantes d'opération de fichiers en PHP (avec code)

Quelles sont les fonctions d'exploitation des fichiers PHP ? Résumé des fonctions courantes d'opération de fichiers en PHP (avec code)

不言
不言original
2018-07-24 15:56:533757parcourir

Il existe de nombreux types de fonctions d'opération de fichiers PHP. Aujourd'hui, je vais partager avec vous les fonctions d'opération de fichiers couramment utilisées en PHP. Sans plus tarder, examinons les fonctions des opérations de fichiers PHP.

1 php obtient le nom du fichier :
basename — renvoie le nom de fichier qui fait partie du chemin

donne un fichier contenant Une chaîne pointant vers le chemin complet d'un fichier. Cette fonction renvoie le nom du fichier de base. Si le nom du fichier se termine par le suffixe , cette partie sera également supprimée.

string basename ( string $path [, string $suffix ] )

$path = "/home/cate/index/index2.php";
$file = basename($path);
echo $file.&#39;<br>&#39;; //index2.php
$file2 = basename($path,&#39;.php&#39;);
echo $file2;    //index2
$file3 = basename($path,&#39;2.php&#39;);
echo $file2;    //index

2 php pour obtenir le nom du répertoire

dirname — Renvoie la partie répertoire du chemin

string dirname ( string $path )

donne a contenant S'il existe une chaîne pointant vers le chemin complet d'un fichier, cette fonction renvoie le nom du répertoire après avoir supprimé le nom du fichier.

echo dirname(__FILE__);

__FILE__ pointe vers le chemin du fichier actuel qui est équivalent à getcwd();

3 php obtient le tableau associatif du chemin

pathinfo - renvoie les informations sur le chemin du fichier

pathinfo() retour Un tableau associatif contient des informations sur le chemin . Comprend les unités de tableau suivantes : dirname, basename et extension.

Vous pouvez spécifier les unités à renvoyer via le paramètre options. Ils incluent : PATHINFO_DIRNAME, PATHINFO_BASENAME et PATHINFO_EXTENSION. La valeur par défaut est de renvoyer toutes les unités. S'il n'est pas obligatoire d'obtenir toutes les unités, cette fonction renvoie une chaîne.

<?php
$path_parts = pathinfo("/home/cate/index.action.html");
// /home/cate   文件目录
echo $path_parts["dirname"] . "<br/>";          
//  index.action.html  文件名
echo $path_parts["basename"] . "<br/>";         
//  html        扩展名
echo $path_parts["extension"] . "<br/>";
//直接获取扩展名       
echo pathinfo("/home/cate/index.action.html", PATHINFO_EXTENSION);

4 fonction fopen - ouvrir un fichier ou une URL

ressource fopen ( string $filename , string $ mode [, bool $use_include_path [, ressource $zcontext ]] )

'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 以及以后的版本所支持,仅能用于本地文件。

'r'
Ouvrir en mode lecture seule, en pointant le pointeur du fichier vers l'en-tête du fichier.
'r+' Ouvrez en mode lecture et écriture et pointez le pointeur du fichier vers l'en-tête du fichier.
'w' Ouvrez en mode écriture, pointez le pointeur du fichier sur l'en-tête du fichier et tronquez la taille du fichier à zéro. Si le fichier n'existe pas, essayez de le créer.
'w+' Ouvrez en mode lecture et écriture, pointez le pointeur du fichier sur l'en-tête du fichier et tronquez la taille du fichier à zéro. Si le fichier n'existe pas, essayez de le créer.
'a' Ouvrez en mode écriture et pointez le pointeur de fichier vers la fin du fichier. Si le fichier n'existe pas, essayez de le créer.
'a+' Ouvrez en mode lecture-écriture et pointez le pointeur de fichier vers la fin du fichier. Si le fichier n'existe pas, essayez de le créer.
'x' Créez et ouvrez en écriture, en pointant le pointeur du fichier vers l'en-tête du fichier. Si le fichier existe déjà, l'appel fopen() échoue et renvoie FALSE, et génère un message d'erreur de niveau E_WARNING. Si le fichier n'existe pas, essayez de le créer. Cela équivaut à spécifier l'indicateur O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est prise en charge par PHP 4.3.2 et versions ultérieures et ne peut être utilisée que pour les fichiers locaux.
'x+' Créez et ouvrez en lecture et en écriture, en pointant le pointeur de fichier vers l'en-tête du fichier. Si le fichier existe déjà, l'appel fopen() échoue et renvoie FALSE, et génère un message d'erreur de niveau E_WARNING. Si le fichier n'existe pas, essayez de le créer. Cela équivaut à spécifier l'indicateur O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est prise en charge par PHP 4.3.2 et versions ultérieures et ne peut être utilisée que pour les fichiers locaux.
<?php
    
$handle = fopen("doc.txt", "r");
    var_dump($handle);

D:\wamp\www\test\jsontest.php:3:resource(3stream)

<?php
    
$file = fopen(&#39;newtxt.txt&#39;,&#39;w&#39;)
or die
(&#39;无法打开文件&#39;);//不存在则自动创建
    $data = &#39;you are a coder!&#39;;
    fwrite($file,$data);
    $data = &#39;you are a MAN!&#39;;
    fwrite($file,$data);
    fclose($file);

5  fstat函数— 通过已打开的文件指针取得文件信息

array fstat ( resource $handle )

获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。

返回一个数组具有该文件的统计信息,该数组的格式详细说明于手册中 stat() 页面里。

<?php

// 打开文件
$fp = fopen("doc.txt", "r");

// 取得统计信息
$fstat = fstat($fp);

// 关闭文件
fclose($fp);
// 只显示关联数组部分
//print_r(array_slice($fstat, 13)); 

print_r($fstat);	//获取一个文件信息数组包括索引和关联数组

array_slice — 从数组中取出一段 返回数组

array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )

array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。

如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。

如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。

<?php
$input = 
array("a", "b", "c", "d", "e");
$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"
// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));

 

Array

 

(

 

[0] => c

 

[1] => d

 

)

 

Array

 

(

 

[2] => c

 

[3] => d

 

)

 

 

6 filesize函数— 取得文件大小

int filesize ( string $filename )

返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。

<?php
$filename = &#39;doc.txt&#39;;
echo $filename.&#39;:&#39;.filesize($filename).&#39;bytes&#39;;

doc.txt:46bytes

7.disk_free_space函数— 返回目录中的可用空间

float disk_free_space ( string $directory )

给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。

<?php
echo disk_free_space("C:").&#39;<br/>&#39;;
echo disk_free_space("D:").&#39;<br/>&#39;;
echo disk_free_space("/");

71001600000
186459181056

disk_total_space — 返回一个目录的磁盘总大小

8 fileatime函数— 取得文件的上次访问时间

filectime — 取得文件的 inode 修改时间

filemtime — 取得文件修改时间

9 file函数— 把整个文件读入一个数组中

<?php
$myfile = &#39;doc.txt&#39;;
$lines = file($myfile);
for($i=0,$len = count($lines);$i<$len;$i++){
    echo mb_convert_encoding($lines[$i], "UTF-8", "GBK").&#39;<br/>&#39;;
}

我是一个新手程序员,需要慢慢努力才能有所收获1! 
我是一个新手程序员,需要慢慢努力才能有所收获2! 
我是一个新手程序员,需要慢慢努力才能有所收获3! 
我是一个新手程序员,需要慢慢努力才能有所收获4! 
我是一个新手程序员,需要慢慢努力才能有所收获5! 
我是一个新手程序员,需要慢慢努力才能有所收获6!

mb_convert_encoding($lines[$i], "UTF-8", "GBK")

将每一行原来的WINDOWS下GBK格式的数据$lines[$i]转换为UTF-8格式

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

<?php
$myfile = &#39;doc.txt&#39;;
$encoding = mb_detect_encoding($myfile, 
array(&#39;GBK&#39;,&#39;UTF-16&#39;,&#39;UCS-2&#39;,&#39;UTF-8&#39;,&#39;BIG5&#39;,&#39;ASCII&#39;));
echo $encoding;

CP936 GBK

mb_detect_encoding — 侦测字符集  第一个为文件或者路径 第二个为可能的字符集

10 fgets函数— 从文件指针中读取一行

string fgets ( int $handle [, int $length ] )

handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

出错时返回 FALSE

<?php
$handle = fopen(&#39;doc.txt&#39;,&#39;r&#39;);
if ($handle){
    while (!feof($handle)){
        $data[] = fgets($handle,1024);
    }
    print_r($data);
    fclose($handle);
}
Array
(
    [0] => 我是一个新手程序员,需要慢慢努力才能有所收获1!
    [1] => 我是一个新手程序员,需要慢慢努力才能有所收获2!
    [2] => 我是一个新手程序员,需要慢慢努力才能有所收获3!
    [3] => 我是一个新手程序员,需要慢慢努力才能有所收获4!
    [4] => 我是一个新手程序员,需要慢慢努力才能有所收获5!
    [5] => 我是一个新手程序员,需要慢慢努力才能有所收获6!
)

feof — 测试文件指针是否到了文件结束的位置

如果服务器没有关闭由 fsockopen() 所打开的连接,feof() 会一直等待直到超时而返回 TRUE。默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。

fclose — 关闭一个已打开的文件指针

11 fgetss函数—— 从文件指针中读取一行并过滤掉 HTML 标记
fgets() 相同,只除了 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

   可以用可选的第三个参数指定哪些标记不被去掉

file_exists — 检查文件或目录是否存在

bool file_exists ( string $filename )

如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE

12 file_put_contents函数— 将一个字符串写入文件

int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )

和依次调用 fopen()fwrite() 以及 fclose() 功能一样。

filename 要写入数据的文件名
data  要写入的数据。类型可以是 stringarray(但不能为多维数组),或者是 stream 资源
flags  可选,规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH:检查 filename 副本的内置路径
FILE_APPEND:在文件末尾以追加的方式写入数据
LOCK_EX:对文件上锁
context  可选,Context是一组选项,可以通过它修改文本属性

  • fopen() - 打开文件或者 URL

  • fwrite() - 写入文件(可安全用于二进制文件)

  • file_get_contents() - 将整个文件读入一个字符串

<?php
echo file_put_contents(&#39;doc.txt&#39;,&#39;你是一个程序员7&#39;,FILE_APPEND
);

返回字节数22

如果文件不存在,则创建文件,相当于fopen()函数行为。

如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免。

file_put_contents 函数可安全用于二进制对象。

如果对于确定已经存在的文件,最好进行一个判断

if 
(file_exists(&#39;test.txt&#39;)) {
    file_put_contents(&#39;test.txt&#39;,&#39;contents&#39; );
}

相关推荐:

php文件操作的方法及实例详解

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn