文件操作

孤人 提交于 2020-02-22 00:44:44

文件类型

PHP里面,文档类型有7(基于UNIX系统),如果是基于Windows系统,文件类型只有3种。

UNIX系统下面文件类型有7种:fifochardirblocklinkfile unknown

如下表:

文件类型

描述

fifo

命名管道,用于将信息的一个进程传递到另一个进程

char

字符设备

Dir

目录类型

Block

块设备类型

Link

符号链接,是指向文件的指针

File

普通文件类型

unknown

未知类型

 

Windows系统下面文件类型只有3种:dirfileunknown

PHP里面有一个函数可以查看文件的类型filetype()

  

这里补充一个file_exists()函数:判断文件是否存在

 

 

除此之外,还有一组判断文件是否为某一个类型的函数

is_file()  is_dir()

文件属性

在操作文件的时候,我们往往需要获取文件的相关属性,例如:文件的大小,文件的创建时间,文件的访问时间

如下表:下面的函数接收的参数都是文件所在的路径

函数

功能

返回值

file_exists

判断文件是否存在

返回true或者false

filesize()

获取文件大小

返回字节数

filectime()

获取文件的创建时间

返回一个时间戳

filemtime()

获取文件的修改时间

返回一个时间戳

fileatime()

获取文件上次访问的时间

返回一个时间戳

is_readable()

判断文件是否可读

返回true或者false

is_writeable()

判断文件是否可写

返回true或者false

is_executable()

判断文件是否可以执行

返回true或者false

is_file()

判断是否为文件

返回true或者false

is_dir()

判断是否为目录

返回true或者false

stat

获取文件大部分信息

返回一个装有文件大部分信息的关联数组

 

stat()函数:返回的是一个关联数组,数组里面装有关于文件的信息 

具体数组元素的含义,我们可以参照手册:

 

这些属性在UNIX上面用的比较多,在Windows上面,没有uidgidblksizeblocks这些属性,所以在windows下默认值是0或者-1

 

目录的相关操作

目录的路径

路径可以分为绝对路径和相对路径

绝对路径:所谓绝对路径,就是指从根目录下面一层一层往下找。最后找到需要找的目录或者文件

相对路径:从当前的目录开始找,进入某一个目录,最终找到需要的文件或者目录

 

绝对路径和相对路径示例:

 

UNIX系统下面,支持的路径分隔符为/   但是在Windows系统下面的路径分隔符为\,但是需要使用转义字符\\进行转移,如下:

 

但是Windows系统支持使用/作为路径分隔符,为了兼容和更好的移植,一般就使用/作为路径分隔符

 

除了使用/作为路径分隔符以外,还有一个常量也可以作为路径分隔符,DIRECTORY_SEPARATOR

 

 

通常在做开发的时候,将目录的各个部分分隔开是很有用的。例如:取得文件的扩展名,取得文件所在的目录。basename()dirname()pathinfo()

basename():返回路径中的文件名部分。该函数接收两个参数,第一个是路径,第二个是文件的类型,如果传入第二个参数,则不显示文件的扩展名。

dirname():和basename()函数的作用刚好相反,获取文件的目录部分

 pthinfo():返回一个关联数组,数组里面装有传入路径的目录名,传入路径的文件名,文件扩展名,和去掉扩展名的文件

 

遍历目录

对服务器下面的某一个目录进行浏览,通常称之为遍历目录。可能需要用到的函数如下:

opendir():打开指定的目录

 

closedir():关闭指定的目录

readdir():读取指定目录,返回当前的目录并且指针位置移动到下一位,当指针移动到末尾无法再移动的时候,返回false

rewinddir():倒回目录,将目录指针移动到目录开始的位置

  

通过观察发现:多了两个目录,分别是...  

(重要)每一个目录下面默认都存在这两个目录,.代表当前目录,..代表上一级目录,所以我们在对目录进行操作的时候,一定要注意排除这两个多余目录

 

PHP里面,PHP使用的是UTF-8的编码,而windows中文版使用的是GB2312的编码。

通过iconv()函数就可以改变编码,该函数接收3个参数

iconv(“原来的编码”,”你要转换成什么的编码”,”针对什么内容”) 

 

还有一个glob()函数:作用也是用来遍历目录,返回一个包含检索结果的数组 

 

统计目录大小

PHP里面有两个函数:disk_free_space()disk_total_space()

disk_free_space():统计磁盘的剩余空间

disk_total_space():统计磁盘的总大小

统计出来的磁盘大小的单位为字节

但是,如果要符合平时查看磁盘大小的习惯的话,就需要将字节转换为对应的大小  

 

建立和删除目录

建立目录非常简单,PHP给我们提供了建立目录的函数mkdir(),该函数接收一个参数:想要建立目录的路径

删除目录

删除目录PHP系统也给我们提供了相应的函数rmdir()。接收一个参数,参数为要删除目录的路径 

 

但是rmdir()函数只能删除空目录,如果目录非空,那么无法直接删除

 

 

通过unlink()函数可以删除某一个文件

 

所以如果要删除不为空的目录,又需要用到递归方法去遍历每一个目录,删除目录下面的文件 

 

复制目录

PHP系统也是为我们提供了一个拷贝文件的函数:copy()函数

该函数接收两个参数(源文件的路径,目标文件路径)

如果目标文件已经存在,则会被覆盖掉 

移动目录

PHP里面提供了一个rename()函数,可以对目录和文件进行移动,并且移动的时候还可以重命名,非常好用 

 

文件基本操作

打开和关闭文件

在处理文件之前,首先需要建立与文件资源的链接,也就是打开文件。同样,当文件的操作结束以后,应该关闭文件,释放占用的内容

 

打开文件:PHP系统提供fopen()的函数

接收两个参数:fopen(文件路径,打开的方式)

关闭文件

关闭文件PHP系统也为我们提供了相应函数,fclose()

该函数接收1个参数:fclose(打开的资源)

 

 

写入文件

使用fwrite()函数就可以将字符串写入到文件中。写入文件需要注意的是换行的问题。不同的操作系统换行的字符是不一样。UNIX下面使用的换行符为\n  Windows系统使用的换行符为\r\n  苹果的Macintosh系统使用的换行符为\r 

 

fwrite()的第3个参数为写入的长度 

 

 

fwrite()函数有一个别名函数叫做fputs(),效果和fwrite()是一样

 

 

接下来是一个快速写入函数file_put_contents()函数,因为调用该函数就相当于依次调用fopen()fwrite()fclose()

 

 

 

读取文件

PHP里面提供了很多读取文件的函数。

如下表:

函数

描述

fread()

读取打开的文件

file_get_contents()

将文件读入到字符串

fgets()

从打开的文件中返回一行

fgetc()

从打开的文件中返回字符

file()

把文件读取到一个数组里面

readfile()

读取一个文件,并且将其输出到输出缓冲区

 

判断一个文件是否到达最末端,有一个标准,这个标准被称之为EOF(End Of File)

PHP里面就有一个feof()函数,来判断一个文件指针是否位于文件的结束处。如果处于结束位置,返回true,否则返回false

 

①  fread()函数

用来在打开的文件中读取指定长度的字符串

fread(文件资源,指定的长度) 

②  file_get_contents()

相当于依次调用3个函数:fopen()fread()fclose()

 

③ fgets():从打开的文件中返回一行

这里的一行主要是指文本文件里面有没有换行,如果有,就算做一行来处理

④  fgetc():一次读取一个字节,用得比较少,了解即可

⑤ file()函数:将文件读取到一个数组里面

file()函数和file_get_contents()函数类似,不需要打开和关闭文件资源

 

 

⑥  readfile()函数:读取一个文件,并且将其立即输出到缓冲区,也就是说,只要调用该函数,立即就会将内容输出到显示器上

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!