php 目录与文件处理-郑阿奇(续)
前端之家收集整理的这篇文章主要介绍了
php 目录与文件处理-郑阿奇(续),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1.文件目录操作
最顶层止录是磁盘根目录,用'/'或'//'
当前目录 ./
../表示apache的目录即htdocs目录
1.创建与删除目录 mkdir
<div class="codetitle"><a style="CURSOR: pointer" data="74624" class="copybut" id="copybut74624" onclick="doCopy('code74624')"> 代码如下:
<div class="codebody" id="code74624">
<?
PHP if(mkdir("./path",0700)) //在当前目录中创建path目录
echo "创建成功";
?>
2.
获取和更改当前目录
使用getcwd()
函数可以取得当前的工作目录,该
函数没有参数。成功则返回当前的工作目录,失败则返回FALSE
3.打开和
关闭目录句柄
opendir($dir)
closed($dir_handle)
4.读取目录
内容 readdir(),该参数是一个已经打开的目录句柄,与while循环可以实现对目录的遍历
5.
获取指定路径中的目录与
文件 。
array scandir(string $directory [,int $sorting_order [,resource $context ]])
说明:$directory为指定路径。参数$sorting_order默认是按字母升序排列,如果设为1表示按字母的降序排列。
$context是可选参数,是一个资源变量,可以用stream_context_create()
函数生成,这个变量保存着与具体的操作对象有关的一些数据。
函数运行成功则返回一个包含指定路径下的所有目录和
文件名的数组,失败则返回FALSE
2.操作
文件的一般
方法 3.
文件的打开与
关闭 1.打开
文件 resource fopen(string $filename,string $mode [,bool $use_include_path [,resource $context ]])
●$filename参数。fopen()
函数将$filename参数指定的名字资源绑定到一个流上
●$mode参数。$mode参数指定了fopen()
函数访问
文件的模式,取值见表4.5。
$mode
说 明
'r'
只读方式打开
文件,从
文件头开始读
'r+'
读写方式打开
文件,从
文件头开始读写
'w'
写入方式打开
文件,将
文件指针指向
文件头。如果
文件已经存在则
删除已有
内容,如果
文件不存在则尝试创建它
'w+'
读写方式打开
文件,将
文件指针指向
文件头。如果
文件已经存在则
删除已有
内容,如果
文件不存在则尝试创建它
'a'
写入方式打开
文件,将
文件指针指向
文件末尾,如果
文件已有
内容将从
文件末尾开始写。如果
文件不存在则尝试创建它
'a+'
读写方式打开
文件,将
文件指针指向
文件末尾。如果
文件已有
内容将从
文件末尾开始读写。如果
文件不存在则尝试创建它
'x'
创建并以写入方式打开
文件,将
文件指针指向
文件头。如果
文件已存在,则fopen()
调用失败并返回FALSE,并
生成一条E_WARNING级别的
错误信息。如果
文件不存在则尝试创建它。此选项被PH及以后的版本所
支持,仅能用于本地
文件 'x+'
创建并以读写方式打开
文件,将
文件指针指向
文件头。如果
文件已存在,则fopen()
调用失败并返回FALSE,并
生成一条E_WARNING级别的
错误信息。如果
文件不存在则尝试创建它。此选项被PH及以后的版本所
支持,仅能用于本地
文件 'b'
二进制模式,用于连接在其他模式后面。如果
文件系统能够区分二进制
文件和文本
文件(Windows区分,而UNIX不区分),则需要使用到这个选项,推荐一直使用这个选项以便获得最大程度的可移植性 ●$use_include_path参数。如果需要在include_path(
PHP的include路径,在
PHP的
配置文件设置)中搜寻
文件,
可以将可选参数 $use_include_path的值设为1或TRUE,默认为FALSE。
●$context参数。可选的$context参数只有
文件被远程打开时(如通过HTTP打开)才使用,它是一个资源变量,
其中保存着与fopen()
函数具体的操作对象有关的一些数据。如果fopen()打开的是一个HTTP地址,
那么这个变量记录着HTTP请求的请求类型、HTTP版本及其他头信息;如果打开的是FTP地址,
记录的可能是FTP的被动/主动模式
2.
关闭文件 bool fclose(resource $handle)
4.
文件的写入
文件写入前需打开
文件,不存在先创建它,一般用fopen()
函数创建
●fwrite().
文件打开后,向
文件写入
内容 int fwrite(resource $handle,string $string [,int $length ])
说明:参数$handle是写入的
文件句柄,
$string是将要写入
文件中的字符串数据,
$length是可选参数,如果指定了$length,则当写入了$string中的前$length个字节的数据后停止写入。
●file_put_contents()
函数。
PHP 5还引入了file_put_contents()
函数。这个
函数的
功能与依次
调用fopen()、fwrite()及fclose()
函数的
功能一样。语法格式如下:
int file_put_contents(string $filename,string $data [,int $flags [,resource $context ]])
说明:$filename是要写入数据的
文件名。
$data是要写入的字符串,$data也可以是数组,但不能为多维数组。
在使用FTP或HTTP向远程
文件写入数据时,可以使用可选参数$flags和$context,这里不具体介绍。
写入成功后
函数返回写入的字节数,否则返回FALSE。
●fputcsv()
函数。CSV是一种比较常用的
文件格式,一般以.csv作为扩展名。CSV格式把
文件的一行看做是一条记录,记录里的字段使用逗号分隔。
在
PHP中使用 fputcsv()
函数可以把指定的数组格式化为符合CSV
文件格式的
内容,并写入
文件指针指向的当前行。语法格式如下:
int fputcsv(resource $handle [,array $fields [,string $delimiter [,string $enclosure ]]])
说明:参数$handle是要写入的
文件句柄。
参数$fields是要格式化的数组。
可选的$delimiter参数用于设定字段分界符(只允许一个字符),默认为逗号。
可选的$enclosure参数设定字段环绕符(只允许一个字符),默认为双引号
5
文件的读取
1.读取任意长度
fread()
函数可以用于读取
文件的
内容,语法格式如下:
string fread(int $handle,int $length)
说明:参数$handle是已经打开的
文件指针,
$length是指定读取的最大字节数,$length的最大取值为8192。
如果读完$length个字节数之前遇到
文件结尾标志(EOF),则返回所读取的字符,并停止读取操作。
如果读取成功则返回所读取的字符串,如果出错返回FALSE。
注意:在读取
文件后
显示文件内容时,文本中可能含有无法直接
显示的字符,如HTML
标记。
这时需要使用htmlspecialchars()
函数将HTML
标记转化为实体才能
显示文件中的字符。
2.读取整个
文件 ●file()
函数。file()
函数用于将整个
文件读取到一个数组中,语法格式如下:
array file(string $filename [,int $use_include_path [,resource $context ]])
说明:本
函数的作用是将
文件作为一个数组返回,数组中的每个单元都是
文件中相应的一行,
包括换行符在内,
如果失败则返回FALSE。参数$filename是读取的
文件名,参数$use_inclue_path和$context的意义与之前介绍的相同
●readfile()
函数。readfile()
函数用于
输出一个
文件的
内容到浏览器中,语法格式如下:
int readfile(string $filename [,resource $context ]])
●fpassthru()
函数。fpassthru()
函数可以将给定的
文件指针从当前的位置读取到EOF,并把结果写到
输出缓冲区。
要使用这个
函数,必须先使用fopen()
函数打开
文件,然后将
文件指针作为参数传递给fpassthru()
函数,
fpassthru()
函数把
文件指针所指向的
文件内容发送到标准
输出。如果操作成功返回读取到的字节数,否则返回FALSE。
●file_get_contents()
函数。file_get_contents()
函数可以将整个或部分
文件内容读取到一个字符串中,
功能与依次
调用fopen()、fread()及fclose()
函数的
功能一样。语法格式如下:
string file_get_contents(string $filename [,int $offset [,int $maxlen ]])
说明:$filename是要读取的
文件名,可选参数$offset可以指定从
文件头开始的偏移量,
函数可以返回从$offset所指定的位置开始长度为$maxlen的
内容。如果失败,
函数将返回FALSE 3. 读取一行数据
●fgets()
函数。fgets()
函数可以从
文件中读出一行文本,语法格式如下:
string fgets(int $handle [,int $length ])
说明:$handle是已经打开的
文件句柄,可选参数$length指定了返回的最大字节数,考虑到行结束符,
最多可以返回length-1个字节的字符串。如果没有指定$length,默认为1024个字节
●fgetss()
函数与fgets()基本相同,不过fgetss()
函数会尝试从读取的文本中去掉任何html和
PHP标记。
●fgetcsv()
函数。fgetcsv()
函数可以读取指定
文件的当前行,使用CSV格式解析出字段,并返回一个包含这些字段的数组。
语法格式如下:
array fgetcsv(int $handle [,int $length [,string $enclosure ]]])
4. 读取一个字符
fgetc()
函数。fgetc()
函数可以从
文件指针处读取一个字符,语法格式为:
string fgetc(resource $handle)
该
函数返回$handle指针指向的
文件中的一个字符,遇到EOF则返回FALSE
5. 使用指定格式读取
文件 fscanf()
函数。fscanf()
函数可以读取
文件中的数据,并根据指定的格式进行格式化,并返回一个数组。语法格式如下:
mixed fscanf(resource $handle,string $format [,mixed &$... ])
格式字符串中的任何空白会与输入流中的任何空白匹配。
这意味着甚至格式字符串中的制表符“\t”也会与输入流中的一个空格字符匹配。
6.
文件的
上传与下载
1.
文件上传 文件上传可以通过提交html表单来实现。
文件上传结束后,默认存储在临时目录中,这时必须从临时目录中
删除或移动到其他地方
使用
PHP的move_uploaded_file()将其移到其它位置上
move_uploaded_file()
函数语法格式如下:
bool move_uploaded_file(string $filename,string $destination)
注意:在将
文件移动之前需要检查
文件是否是通过HTTP POST
上传的,这可以用来确保恶意的
用户无法欺骗脚本去访问本不能访问的
文件,
这时需要使用is_uploaded_file()
函数。该
函数的参数为
文件的临时
文件名,若
文件是通过HTTP POST
上传的,则
函数返回TRUE。
例4.5 将由HTML表单
上传的GIF
图片文件移动到html目录中
<div class="codetitle">
<a style="CURSOR: pointer" data="66338" class="copybut" id="copybut66338" onclick="doCopy('code66338')"> 代码如下: 大小为:". ($_FILES['myFile']['size']/1024)."kb";