位置:首页 > PHP > PHP功能函数 > 文件处理函数 >

PHP文件目录处理技术

字号+ 作者:micloud 来源:www.seoalphas.com 2018-11-09 11:11 浏览量:2351

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)

QQ截图20181109165050.jpg


参数 描述
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目录操作技术文档

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • PHP文件处理技术:文件上传基本设置

    PHP文件处理技术:文件上传基本设置

    浏览次数:3115

  • PHP文件上传全局变量$_FILE应用说明

    PHP文件上传全局变量$_FILE应用说明

    浏览次数:2656

  • php glob()函数 遍历目录或文件夹

    php glob()函数 遍历目录或文件夹

    浏览次数:2434

  • PHP目录操作技术

    PHP目录操作技术

    浏览次数:2112

网友点评
评论区域