kano个人博客:php文件系统之文件操作

kano个人技术博客 php教程 1,237 次浏览 没有评论

上一篇《php的文件系统信息获取》讲了各种关于文件属性、大小的获取,类型的判断等一系列信息获取的内容,这篇kano技术博客继续讲一下关于php文件系统的各种文件处理实战入门操作。

php文件操作

一、基本操作

1. 打开/创建文件fopen

文件的读取、写入等操作都需要一个文件句柄,fopen函数就可以打开文件并返回一个句柄。

语法:fopen(string $filename, string $mode)

其中filename为文件的路径,mode为打开模式,模式有多种选项:{

r  只读方式

r+  读写方式

w  写入方式,文件如存在可能会覆盖

w+  读写方式,可能会产生覆盖

a  写入方式(追加),文件如存在新写入的内容将会在后面追加

a+  读写方式(追加)

}

如果你对一个文件的需求只是读取的话,可以用只读模式打开文件,文件就可以避免被更改。

大家可能会发现上面写的是“打开/创建文件”,尽管有些奇怪,php中创建文件用的也是fopen函数,以写入方式打开一个不存在的文件,文件则会被创建出来(如果文件存在则有可能会被覆盖)。

2. 读取文件 fread

fread函数用于读取文件,读取的是由fopen文件打开的资源

语法:fread(resource $handle, int $length)

handle为fopen打开的资源,length为读取的字节数,读取操作将在到达文件末尾(EOF,即end of file)或读取了length和字节后停止。

 

读取操作将移动文件指针,所以可以循环读取文件直至读取整个文件,例:

// a.txt内容: abcdefgh
$file = fopen('a.txt', 'r');
while(!feof($file)) {
    $file_content = fread($file, 3);
    print_r('**' . $file_content . '**<br>');
}

读取文件

注:feof函数检测文件指针是否已经到了文件的结尾

3. 写入文件 fwrite

fwrite函数用于写入由fopen打开的文件

语法:fwrite(resource $handle, string $string[, int $length])

handle为文件句柄,string为写入的字符串,length可选,如果指定的话则会在写入length字节后停止操作(或者写完了string,遇到其中一种情况则停止操作)。

根据打开模式的不同,可能会在文件后追加内容,或者可能会覆盖文件:

// a和b均为空文件
$file = fopen('a.txt', 'w');
fwrite($file, 'haha');
$file = fopen('b.txt', 'a');
fwrite($file, 'haha');

将上面的代码执行五次,a.txt:

haha

b.txt:

hahahahahahahahahaha

4. 关闭文件 fclose

使用完文件关闭它们是一个良好的习惯,你肯定不想打开的文件占用系统资源。

语法:fclose(resource $handle)

$file = fopen('a.txt', 'w');
fwrite($file, 'haha');
fclose($file);

5. 复制文件 copy

语法:copy(string $source, string $dest)

source为要复制的文件,dest为目标文件

copy('a.txt', 'c.txt');

复制文件

a.txt被复制为c.txt

注意如果目标文件存在则会被覆盖

6. 重命名/移动文件 rename

语法:rename(string $oldname, string $newname)

rename('a.txt', 'b.txt');

重命名文件

a.txt变成了b.txt

注意移动文件也是rename函数:

rename('a.txt', 'dir1/a.txt');

移动文件

文件移动到了dir1文件夹下

7. 删除文件unlink

语法:unlink(string $filename)

unlink('c.txt');

8. 截取文件

将文件截取到指定的长度,并不是很常用

ftruncate(resource $handle, int $size)

size为要截取到的字符数

$file = fopen('a.txt', 'a');
ftruncate($file, 15);
fclose($file);

二、文件读取

文件的读取是很常用的操作,fread是一个基本的读取方法,但在某些特定的情况下,有一些函数能够更加方便的读取文件。

1. file_get_contents

将整个文件读入一个字符串,如果只是单纯想读取整个文件,这个函数的性能会比较高(且不用open close,很方便)。

$file_str = file_get_contents('a.txt');
print_r($file_str);

file_get_contents

2. file

将整个文件读入一个数组中,每行一条。

$file_arr = file('a.txt');
print_r($file_arr);

php文件操作

※ 可以注意到php有时候对函数的命名有些奇怪:fopen用于打开和创建、rename用于重命名和移动、file更是一个如果不解释你想不到它的用途的函数。

本篇内容kano个人博客介绍了文件的打开、读取、写入、关闭、复制、移动等操作。文件的操作如果善用还是很有裨益的。比如某些小型的静态文件无需存入数据库,调试程序的时候简单的读写等等。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go