PHP笔记之目录和文件操作
目录
7、读取文件内容到字符串中file_get_contents()
主要内容:
PHP操作目录
1、目录操作概述
例如,百度网盘(http://pan.baidu.com) ,就是经典的网页版文件管理系统。
2、创建新目录mkdir()
- 描述:尝试新建一个由 pathname 指定的目录。
- 语法:bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false ]] )
-
参数:
- $pathname:指定目录的路径;
- $mode:默认的 mode 是 0777,意味着最大可能的访问权。$mode在windows下被忽略。 注意$mode的值为八进制。
- $recursive:如果指定的路径的上级目录不存在,则也会递归创建。
- 返回值:成功时返回TRUE,失败时返回FALSE。
3、判断是否是一个目录is_dir()
- 描述:判断给定文件名是否是一个目录。
- 语法:bool is_dir ( string $filename )
返回值:如果文件名存在,并且是个目录,返回 TRUE,否则返回FALSE。
4、判断目录或文件是否存在file_exists()
- 语法:bool file_exists ( string $filename )
- 提示:可以判断文件,也可以判断目录,是否存在。
- 返回:如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE。
5、删除目录rmdir()
- 语法:bool rmdir ( string $dirname )
- 参数:$dirname目录路径。
- 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
- 提示:尝试删除 dirname 所指定的目录。 该目录必须是空的,且要有相应的权限。
6、更改目录的访问权限chmod()
- 描述:改变文件的访问权限
- 语法:bool chmod ( string $filename , int $mode )
-
参数:
- $filename,指定文件的路径;
- $mode,mode 参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1 表示使文件可执行,数字 2 表示使文件可写,数字 4 表示使文件可读。加入这些数字来制定所需要的权限。
- 提示:在window下文件的只读权限是 0444。文件夹只读权限0555。
- 注意:此函数不能作用于远程文件。
7、取得目录或文件访问权限fileperms()
- 语法:int fileperms ( string $filename )
- 返回值:以十进制数字返回文件的访问权限。
8、重命名或移动文件或目录rename()
- 描述:重命名或移动一个文件或目录。如果文件不存在同一目录下,就是移动。
- 语法:bool rename ( string $oldname , string $newname )
- 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
9、打开目录opendir()
- 描述:打开目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
- 语法:resource opendir ( string $path )
返回值:如果成功则返回目录句柄的 resource,失败则返回 FALSE。
10、读取目录中条目readdir()
- 描述:从目录句柄中读取条目 ;
- 语法:string readdir ([ resource $dir_handle ] )
- 说明:返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
- 返回:成功则返回文件名 或者在失败时返回 FALSE 。
11、显示中文目录或文件iconv()
- 描述:字符串按要求的字符编码来转换
- 语法:string iconv ( string $in_charset , string $out_charset , string $str )
-
参数:
- $in_charset,输入的字符集;
- $out_charset,输出的字符集;
- $str,要转换的字符串;
- 返回:返回转换后的字符串, 或者在失败时返回 FALSE。
12、关闭目录句柄closedir()
- 描述:关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。
- 语法:void closedir ( [resource $dir_handle] )
- 提示:如果省略$dir_handle,则默认为最后由opendir()打开的目录句柄。
综合实例:递归遍历phpMyAdmin下的所有条目
1、递归思想
- 递归思想:把一个相对复杂的问题转化为一个与原问题相似的规模较小的问题来求解。比如:求n的阶乘n!=n*(n-1)!。
- 递归方法只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。但在带来便捷的同时,也会有一些缺点,即:通常用递归方法的运行效率不高。
2、递归实现的条件
- 确定递归公式;
- 确定递归边界条件(递归出口),否则会出现死循环。
3、递归遍历phpMyAdmin目录下所有条目
PHP操作文件
1、打开文件fopen()
- 描述:打开文件或者 URL
- 语法:resource fopen ( string $filename , string $mode )
- 参数:$filename,指定要打开的目标文件或URL;$mode,指定文件的打开方式。
- 提示:为移植性考虑,在用 fopen()打开文件时总是使用 'b' 标记。Binary 二进制
- 返回值:成功时返回文件指针资源,如果打开失败,本函数返回 FALSE。
2、打开文件的方式
3、关闭文件fclose()
- 描述:关闭一个已打开的文件指针
- 语法:bool fclose ( resource $handle )
- 参数:$handle必须是由fopen()打开的文件指针。
4、读取指定大小文件内容fread()
- 描述:读取文件(可安全用于二进制文件)
- 语法:string fread ( resource $handle , int $length )
- 参数:$handle是由fopen()创建的handle;$length最多读取的字节数。
- 提示:在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen() 函数的 mode 参数要加上 ‘b’。
- 返回值:返回所读取的字符串, 或者在失败时返回 FALSE。
5、读取一行内容fgets()
- 描述:从文件指针中读取一行
- 语法:string fgets ( resource $handle [, int $length ] )
-
参数:
- $handle:文件指针必须是有效的
- $length:从 handle指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
- 返回值:从指针 handle 指向的文件中读取了 length - 1 字节后返回字符串。 如果文件指针中没有更多的数据了则返回 FALSE。
6、读取文件内容到数组中file()
- 描述:把整个文件读入一个数组中
- 语法:array file ( string $filename [, int $flags = 0 ] )
-
参数:
- $filename,文件的路径;
- $flags,附加选项;
- FILE_USE_INCLUDE_PATH(1):在include_path 中查找文件;
- FILE_IGNORE_NEW_LINES(2):在数组的每个元素末尾不添加换行符;
- FILE_SKIP_EMPTY_LINES(4):跳过空行。
- 注意:不需要打开文件和关闭文件。
7、读取文件内容到字符串中file_get_contents()
- 描述:将整个文件读入一个字符串 ,不用打开文件,也不用关闭文件
- 语法:string file_get_contents ( string $filename )
- 返回:返回读取的数据,或在失败时返回false。
8、实例:读取记事本中的内容,并用表格展示出来
9、写入文件
- 描述:写入文件(可安全用于二进制文件)
- 语法:int fwrite ( resource $handle , string $string )
- 返回:返回写入的字符数,出现错误时则返回 FALSE 。
10、将一个字符串写入文件
- 描述:和依次调用 fopen(),fwrite()以及 fclose() 功能一样。
- 语法:int file_put_contents ( string $filename , mixed $data [, int $flags = 0] )
-
参数:
- $filename要被写入数据的文件名。
- $data要写入的数据。类型可以是 string,array(一维数组)。
- $flags附加选项。
- FILE_USE_INCLUDE_PATH(1) 在 include 目录里搜索 filename
- FILE_APPEND(8)如果文件 filename已经存在,追加数据而不是覆盖。
- LOCK_EX(2)在写入时获得一个独占锁。
- 提示:如果文件不存在,则会自动创建。如果文件过大,不能一次性处理。
- 返回:该函数将返回写入到文件内数据的字节数,失败时返回FALSE。
11、拷贝文件
- 描述:将文件从 source 拷贝到 dest。
- 语法:bool copy ( string $source , string $dest )
- 提示:如果目标文件存在,则会覆盖。
12、删除文件
- 语法:bool unlink ( string $filename )
- 返回:成功时返回 TRUE, 或者在失败时返回 FALSE。
- 提示:可以删除虚拟空间之外的文件,但必须使用相对路径(../),但必须有权限。
- 注意:删除的文件不会进入回收站。
13、其它的文件操作函数
- filesize(),可以获取文件大小,单位为字节。
- is_writable(),判断文件是否可写。
- is_readable(),判断文件是否可读。
- feof(),判断文件指针是否到达文件结尾。
- filectime(),获取创建文件的时间。
- fileatime(),获取文件最新访问时间。
- filemtime(),获取文件最后修改时间。
综合实例:递归删除phpMyAdmin目录