Maison  >  Article  >  développement back-end  >  61 文件系统

61 文件系统

WBOY
WBOYoriginal
2016-07-29 09:11:45882parcourir

读取文件内容:

<code>PHP具有丰富的文件操作函数,最简单的<strong>读取文件</strong>的函数为file_get_contents,可以将整个文件全部读
取到一个字符串中。

<span>$content</span> = file_get_contents(<span>'./test.txt'</span>);
file_get_contents也可以通过参数控制读取内容的开始点以及长度。

<span>$content</span> = file_get_contents(<span>'./test.txt'</span>, null, null, <span>100</span>, <span>500</span>);
PHP也提供类似于C语言操作文件的方法,使用<span>fopen</span>,fgets,<span>fread</span>等方法,fgets可以从文件指针中读
取一行,freads可以读取指定长度的字符串。

<span>$fp</span> = <span>fopen</span>(<span>'./text.txt'</span>, <span>'rb'</span>);
<span>while</span>(!<span>feof</span>(<span>$fp</span>)) {
    echo fgets(<span>$fp</span>); <span>//读取一行</span>
}
<span>fclose</span>(<span>$fp</span>);


<span>$fp</span> = <span>fopen</span>(<span>'./text.txt'</span>, <span>'rb'</span>);
<span>$contents</span> = <span>''</span>;
<span>while</span>(!<span>feof</span>(<span>$fp</span>)) {
    <span>$contents</span> .= <span>fread</span>(<span>$fp</span>, <span>4096</span>); <span>//一次读取4096个字符</span>
}
<span>fclose</span>(<span>$fp</span>);
使用<span>fopen</span>打开的文件,最好使用<span>fclose</span>关闭文件指针,以避免文件句柄被占用。</code>

判断文件是否存在:

<code>一般情况下在对文件进行操作的时候需要先判断文件是否存在,PHP中常用来判断文件存在的函数有
两个is_file与file_exists.

<span>$filename</span> = <span>'./test.txt'</span>;
<span>if</span> (file_exists(<span>$filename</span>)) {
    <span>echo</span> file_get_contents(<span>$filename</span>);
}
如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判
断目录是否存在,从函数名可以看出,
is_file是确切的判断给定的路径是否是一个文件。

<span>$filename</span> = <span>'./test.txt'</span>;
<span>if</span> (is_file(<span>$filename</span>)) {
    <span>echo</span> file_get_contents(<span>$filename</span>);
}
更加精确的可以使用is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写。

<span>$filename</span> = <span>'./test.txt'</span>;
<span>if</span> (is_writeable(<span>$filename</span>)) {
    file_put_contents(<span>$filename</span>, <span>'test'</span>);
}
<span>if</span> (is_readable(<span>$filename</span>)) {
    <span>echo</span> file_get_contents(<span>$filename</span>);
}</code>

写入内容到文件:

<code>与<strong>读取文件</strong>对应,PHP写文件也具有两种方式,最简单的方式是采用file_put_contents。

<span>$filename</span> = <span>'./test.txt'</span>;
<span>$data</span> = <span>'test'</span>;
file_put_contents(<span>$filename</span>, <span>$data</span>);
上例中,<span>$data</span>参数可以是一个一维数组,当<span>$data</span>是数组的时候,会自动的将数组连接起来,
相当于<span>$data</span>=implode(<span>''</span>, <span>$data</span>);

同样的,PHP也支持类似C语言风格的操作方式,采用<span>fwrite</span>进行文件写入。

<span>$fp</span> = <span>fopen</span>(<span>'./test.txt'</span>, <span>'w'</span>);
<span>fwrite</span>(<span>$fp</span>, <span>'hello'</span>);
<span>fwrite</span>(<span>$fp</span>, <span>'world'</span>);
<span>fclose</span>(<span>$fp</span>);</code>

取得文件的修改时间:

<code>文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

fileowner:获得文件的所有者
filectime:获取文件的创建时间
filemtime:获取文件的修改时间
fileatime:获取文件的访问时间
其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态
文件或者缓存数据的更新。

<span>$mtime</span> = filemtime(<span>$filename</span>);
<span>echo</span><span>'修改时间:'</span>.date(<span>'Y-m-d H:i:s'</span>, filemtime(<span>$filename</span>));</code>

取得文件的大小:

<code>通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。

<span>$filename</span> = <span>'/data/webroot/usercode/code/resource/test.txt'</span>;
<span>$size</span> = filesize(<span>$filename</span>);
如果要转换文件大小的单位,可以自己定义函数来实现。

<span><span>function</span><span>getsize</span><span>(<span>$size</span>, <span>$format</span> = <span>'kb'</span>)</span> {</span><span>$p</span> = <span>0</span>;
    <span>if</span> (<span>$format</span> == <span>'kb'</span>) {
        <span>$p</span> = <span>1</span>;
    } <span>elseif</span> (<span>$format</span> == <span>'mb'</span>) {
        <span>$p</span> = <span>2</span>;
    } <span>elseif</span> (<span>$format</span> == <span>'gb'</span>) {
        <span>$p</span> = <span>3</span>;
    }
    <span>$size</span> /= pow(<span>1024</span>, <span>$p</span>);
    <span>return</span> number_format(<span>$size</span>, <span>3</span>);
}

<span>$filename</span> = <span>'/data/webroot/usercode/code/resource/test.txt'</span>;
<span>$size</span> = filesize(<span>$filename</span>);

<span>$size</span> = getsize(<span>$size</span>, <span>'kb'</span>); <span>//进行单位转换</span><span>echo</span><span>$size</span>.<span>'kb'</span>;
值得注意的是,没法通过简单的函数来取得目录的大小,目录的大小是该目录下所有子目录以及文件
大小的总和,因此需要通过递归的方法来循环计算目录的大小。</code>

删除文件:

<code>跟Unix系统命令类似,PHP使用<span>unlink</span>函数进行文件删除。

<span>unlink</span>(<span>$filename</span>);
删除文件夹使用<span>rmdir</span>函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。

<span>rmdir</span>(<span>$dir</span>);
如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以
使用<span>glob</span>函数遍历所有文件。

<span>foreach</span> (<span>glob</span>(<span>"<span>*"</span>) as <span>$filename</span>) {
   unlink(<span>$filename</span>);
}</span></code>
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了61 文件系统,包括了读取文件方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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