Jadual Kandungan
PHP高级特性二之文件处理,
文件系统用途
文件系统函数用法详述
1.基本的判断函数
2.文件相关信息获取
 3.文件路径相关函数
4. 文件的创建删除修改
文件读写
1. file_get_contents(string)
2. file_put_contents(filename,content)
3.file(filename)
4.fopen(filename,mode)
5.fwrite(file,content)
6. fread(file,size)
7.fgets(file)
7.fgetc(file)
8.ftell(file)
9.fseek(file,offset,whence)
10.rewind($file)
11.flock(file,operation[,wouldblock])
Rumah pembangunan bahagian belakang tutorial php PHP高级特性二之文件处理,_PHP教程

PHP高级特性二之文件处理,_PHP教程

Jul 13, 2016 am 09:52 AM
php satu berurusan dengan dokumen modul ciri maju

PHP高级特性二之文件处理,

PHP中的文件处理也是一个相当重要的模块,这一篇的主要内容就是PHP中文件系统的简介。

文件系统用途

1. 项目处理都离不开文件处理

2. 可以用文件长时间保存数据

3. 建立缓存,在服务器中进行文件操作

文件系统函数用法详述

1.基本的判断函数

<p>is_dir &mdash; 判断给定文件名是否是一个目录</p>
<p>is_file &mdash; 判断给定文件名是否为一个文件</p>
<p>is_executable &mdash; 判断给定文件名是否可执行</p>
<p>is_link &mdash; 判断给定文件名是否为一个符号连接</p>
<p>is_readable &mdash; 判断给定文件名是否可读</p>
<p>is_uploaded_file &mdash; 判断文件是否是通过 HTTP POST 上传的</p>
<p>is_writable &mdash; 判断给定的<span id="11_nwp">文件名是否可写</span></p>
<p>is_writeable &mdash; is_writable 的别名</p>
Salin selepas log masuk

2.文件相关信息获取

<p>file_exists &mdash; 检查文件或目录是否存在</p>
<p>fileatime &mdash; 取得文件的上次访问时间</p>
<p>filectime &mdash; 取得文件的 inode 修改时间</p>
<p>filegroup &mdash; 取得文件的组</p>
<p>fileinode &mdash; 取得文件的 inode</p>
<p>filemtime &mdash; 取得文件修改时间</p>
<p>fileowner &mdash; 取得文件的所有者</p>
<p>fileperms &mdash; 取得文件的权限</p>
<p>filesize &mdash; 取得文件大小</p>
<p>filetype &mdash; 取得文件类型</p>
Salin selepas log masuk

下面我们写一个例子,传入文件名,打印它的详细信息。

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

运行结果

<p>1.<span id="10_nwp">php是一个文件<br />1.php不是可执行文件<br />1.php是可读的<br />1.php不是可写入的<br />文件1.php的大小是2MB<br />文件1.php的类型是file<br />文件1.php的所有者是1000<br />文件1.php的最后访问时间为2015-03-04 12:58:33<br />文件1.php的inode是536185<br />文件1.php的修改时间是2015-03-04 12:58:32<br />文件1.php的权限是33204</span></p>

Salin selepas log masuk

3.文件路径相关函数

相对路径:相对于当前目录的上级和下级目录

<p>. 当前目录<br />.. 上一级目录</p>

Salin selepas log masuk

路径分隔符号

<p>linux/Unix &ldquo;/&rdquo;<br />windows &ldquo;\&rdquo;<br />不管是什么操作系统PHP的目录分割符号都支技 / (Linux)</p>

Salin selepas log masuk

绝对路径:可以指的操作系统的根,也可以指的是存放网站的文档根目录

<p>如果是在服务器中执行(通过PHP文件处理<span id="9_nwp">函数执行)路径 则 &ldquo;根&rdquo;指的就是操作系统的根<br />如果程序是下载的客户端,再访问<span id="8_nwp">服务器中的文件时,只有通过Apache访问,&ldquo;根&rdquo;也就指的是文档根目录</span></span></p>

Salin selepas log masuk

三个相关函数

<p>basename &mdash; 返回路径中的<span id="7_nwp">文件名部分</span></p>
<p>dirname &mdash; 返回路径中的目录部分</p>
<p>pathinfo &mdash; 返回文件路径的信息</p>

Salin selepas log masuk

例如下面的例子

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

运行结果

<p>index.<span id="6_nwp">php<br />login.rar<br />demo.html<br />www.gif</span></p>

Salin selepas log masuk

可以看出,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);

运行结果

<p>./aaa<br />../www/yyy<br />c:/appserv/www<br />http://localhost/yyy</p>

Salin selepas log masuk

可以发现,dirname这个函数可以多层嵌套使用,返回的就是它所在的路径,即除了最后一项之外所有的项。

另外 pathinfo的以上所有信息都可以获取到,另外还包括了文件名和扩展名

比如下面的结果

<p>Array ( [dirname] => ../www/yyy [basename] => login.rar [extension] => rar [filename] => login )</p>

Salin selepas log masuk

4. 文件的创建删除修改

<p>touch &mdash; 创建一个文件</p>
<p>unlink &mdash; 删除文件</p>
<p>rename &mdash; 重命名一个文件或目录</p>
<p>copy &mdash; <span id="5_nwp">拷贝文件</span></p>

Salin selepas log masuk

例如下面的例子

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

权限相关内容

<p>rwx 表这个文件的拥有者 r读 w写 x执行<br />rwx 表这个文件的拥有者所在的组 r读 w写 x执行<br />rwx 其它用户对这个为文件的权限 r读 w写 x执行</p>

Salin selepas log masuk

文件读写

1. file_get_contents(string)

传入文件名,直接得到文件中的文本信息,返回的内容即为文件中的文本。

例如

1 2 3 4 $str = file_get_contents("1.txt"); echo $str; ?>

则直接打开了 1.txt 文件中的内容,并返回文件中的文本信息。

如果文件不存在,那么会提示

<p><strong>Warning</strong>: file_get_contents(2.txt): failed to open stream: No such file or directory</p>

Salin selepas log masuk

同样,文件还可以是远程文件,例如,参数传入 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是打开文件的方式

<p>r,以只读模式打开文件<br />r+,除了读,还可以写入。<br />w, 以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则会清除原文件中所有内容,再写入(打开已有的重要文件)<br />w+,除了可以写用fwrite, 还可以读fread<br />a,以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则不清除原有文件内容,再原有文件内容的最后写入新内容,(追加)<br />a+,除了可以写用fwrite, 还可以读fread<br />b,以二进制模式打开文件(图,电影)<br />t,以文本模式打开文件</p>

Salin selepas log masuk

注意:

<p>r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容;</p>
<p>w+具有读写属性,写的时候如果文件存在,会被清空,从头开始写。</p>

Salin selepas log masuk

返回的是一个文件资源

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是文件资源,每次读取一行。例如我们读取出腾讯首页一共有多少行。

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

会输出结果 8893,我们可以查看源文件,看看它一共有多少行,验证一下即可。

7.fgetc(file)

与fgets方法很相似,file是文件资源,每次读取个字符。例如我们读取出腾讯首页一共有多少个字符。

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

上述代码便会输出所有的字符数量。

8.ftell(file)

ftell 是返回当前读文件的指针位置,file 是文件资源,是由 fopen 返回的对象。

9.fseek(file,offset,whence)

file

文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

offset

偏移量。

要移动到文件尾之前的位置,需要给 offset 传递一个负值,并设置 whence 为 SEEK_END。

whence

<p>SEEK_SET &ndash; 设定位置等于 offset 字节。</p>
<p>SEEK_CUR &ndash; 设定位置为当前位置加上 offset。</p>
<p>SEEK_END &ndash; 设定位置为文件尾加上 offset。</p>

Salin selepas log masuk

10.rewind($file)

回到文件头部,file是文件资源

例如

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 php $file = fopen("1.txt","r"); echo ftell($file)."
"; //输出读取前的指针位置
echo fread($file,10)."
"; //读取10个字符,指针移动10个单位
echo ftell($file)."
"; //输出读取完之后当前指针位置
fseek($file,20,SEEK_CUR); //当前指针前移20单位 echo ftell($file)."
"; //输出移动之后指针的位置
echo fread($file,10)."
"; //输出读取的10个字符
echo ftell($file)."
"; //输出读完10个字符之后指针的位置
fseek($file,-20,SEEK_END); //指针移动到文件末尾前20个字符 echo ftell($file)."
"; //输出移动之后指针的位置
echo fread($file,10)."
"; //输出文件末尾20个字符
echo ftell($file)."
"; //输出读完10个字符之后指针的位置
rewind($file); //回到文件头部 echo ftell($file)."
"; //输出移动之后指针的位置
?>

运行结果:

<p>0<br />cuiqingcai<br />10<br />30<br />uiqingcai.<br />40<br />374<br />i.comcuiqi<br />384<br />0</p>

Salin selepas log masuk

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

file

文件资源指针,是典型地由 fopen() 创建的 resource(资源)。

operation

operation 可以是以下值之一:

<p>LOCK_SH取得共享锁定(读取的程序)。</p>
<p>LOCK_EX 取得独占锁定(写入的程序。</p>
<p>LOCK_UN 释放锁定(无论共享或独占)。</p>

Salin selepas log masuk

如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。

wouldblock

如果锁定会堵塞的话(EWOULDBLOCK 错误码情况下),可选的第三个参数会被设置为 TRUE。(Windows 上不支持)

例如

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1011002.htmlTechArticlePHP高级特性二之文件处理, PHP中的文件处理也是一个相当重要的模块,这一篇的主要内容就是PHP中文件系统的简介。 文件系统用途 1. 项目...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

See all articles