php 文件目录处理,PHP文件目录处理技术

PHP文件目录处理技术,需要掌握熟知以下几点:

一、基本的文件处理技术

1、打开一个文件

2、读取文件内容

3、向文件中写入数据

4、关闭打开的文件资源

二、目录操作技术

三、文件上传技术

文件操作是通过PHP内置函数完成的,作为初学者可能觉得文件操作比较难掌握,搞不清一些参数配置,总觉得文件操作带有一层神秘感。之所以会出现这样的情况,是因为你没有真正去操作,总结操作的思路。

1、打开文件

fopen() 函数打开文件或者 URL。如果打开失败,本函数返回 FALSE。

语法:

fopen(filename,mode,include_path,context)

参数说明:

参数

描述

filename

必需。规定要打开的文件或 URL。

mode

必需。规定要求到该文件/流的访问类型。可能的值见下表。

include_path

可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。

context

可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

mode为打开文件的方式,这个参数比较重要,相对应的可选值也比较多,需要熟悉掌握:

参数

说明

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

2、读取文件内容

文件打开后就可以进行读取和写入操作了,PHP读取文件数据函数有4个,分别用来读取一个字符、读取一行字符、读取任意长度字符串、读取整个文件数据。

a、fgetc()函数,读取一个字符。

fgetc() 函数从文件指针中读取一个字符。

语法:

fgetc(file)

file 必需。规定要检查的文件,即fopen打开的一个文件资源。

返回一个包含有一个字符的字符串,该字符从 file 指向的文件中得到。碰到 EOF 则返回 false。文件指针必须有效,并且必须指向一个由 fopen() 或 fsockopen() 成功打开(但还没有被 fclose() 关闭)的文件。

如果该文件包含多个字符串,多次使用该函数能够按顺序取出剩下的字符,也就是说,fgetc函数取出一个字符后,文件资源指针会自动移到下一个。

b、fgets()/fgetss()函数读取一行字符

语法:

fgets(file[,length])

参数

描述

file

必需。规定要读取的文件。

length

可选。规定要读取的字节数。默认是 1024 字节。

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

fgetss()函数语法和上面一样,两者的区别就是:fgets()函数读取的数据是原样输出的,而fgetss()函数读取的数据则会去掉数据中存在的html标签,以纯文本的形式输出。

c、fread()函数 读取任意长度的字符串

语法:

fread(file,length)

此时是不是觉得这个和fgets()功能一样?二者是有差别的:首先fread函数要求length这个参数是必须的,fgets函数在遇到换行符时,及时指定的length长度未读取完也会结束,但是fread()则会一直读取到length-1个字符串为止。

d、readfile()/file()/file_get_contents()函数,读取整个文件

三个函数虽然都是读取整个文件,但是差别还是比较大的

readfile()读取一个文件并写入到输出缓冲,成功则返回读取的字节数,失败返回false,该函数不需要打开或关闭文件操作,不需要输出语句,直接应用即可。

语法:

readfile(filename,include_path,context)

参数

描述

filename

必需。规定要读取的文件。

include_path

可选。如果也想在 include_path 中搜索文件,可以使用该参数并将其设为 true。

context

可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

file()函数是将整个文件读取到一个数组中,成功返回数组,数组中的每个元素都是文件中对应的一行,包括换行符在内,失败则返回false。

语法:

file(path,include_path,context)

b37705121a6d5ed0d4756db1cf3fdc62.png

参数

描述

path

必需。规定要读取的文件。

include_path

可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。

context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

file_get_contents() 函数把整个文件读入一个字符串中。

和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。file_get_contents()函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

语法:

file_get_contents(path,include_path,context,start,max_length)

参数

描述

path

必需。规定要读取的文件。

include_path

可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。

context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

start

可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。

max_length

可选。规定读取的字节数。该参数是 PHP 5.1 新加的。

以上三个函数均不需要fopen函数打开文件。

3、向文件中写入内容

打开文件之后,就有了向文件写入内容的权限,PHP中通过fwrite()和file_put_contents()函数执行文件的写入操作。

a、fwrite()函数 向文件中写入数据

fwrite()函数执行文件的写入操作(可安全用于二进制文件),他还有一别名:fputs(),语法如下:

fwrite(resource file,string,length)

参数

描述

file

必需。规定要写入的打开文件。

string

必需。规定要写入文件的字符串。

length

可选。规定要写入的最大字节数。

fwrite()把string的内容写入文件指针file处。 如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止,两种情况先满足哪种,哪种先发生。如果你指定length为100个字符,但string内容只有50个,那么这个length相当于是无效的。

fwrite()返回写入的字符数,出现错误时则返回false。

$file = fopen("alpha.txt","w");

echo fwrite($file,"Hello World. Happy Coding!");

fclose($file);

写入的字符串内容,中间如果想插入分行,请使用“\n”换行符。

b、file_put_contents()

file_put_contents()函数把一个字符串写入文件中。与依次调用fopen(),fwrite()以及 fclose()功能一样,即file_put_contents()函数是这三个函数的综合体,包含了打开文件资源、写入内容、关闭文件资源这三个操作。

file_put_contents()将字符串写入文件中,成功则返回写入的字节数,失败返回FALSE,语法如下:

file_put_contents(string file,string data,mode,context)

参数

描述

file

必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。

data

可选。规定要写入文件的数据。可以是字符串、数组或数据流。

mode

可选。规定如何打开/写入文件,实现对文件的锁定。可能的值:

FILE_USE_INCLUDE_PATH

FILE_APPEND

LOCK_EX

context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

上面两个函数不近能写入文字内容,也可以将读取到的图片资源写入到另一个图片中。

4、关闭文件指针

文件有打开就有关闭,对文件操作结束后,应该关闭这个文件,否则可能引起错误,使用fclose()函数关闭即可。具体示例在上面已经出效过,不再举例。

以上就是文件操作的大概内容,文件操作研究过后,接下来就是目录操作。目录也是文件,一种特殊的文件。具体操作说明参考这里:PHP目录操作技术文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值