热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php目录与文件处理-郑阿奇(续)_php入门_脚本之家

php目录与文件处理-郑阿奇(续),需要的朋友可以参考下。

php 目录与文件处理-郑阿奇(续) ,需要的朋友可以参考下。

1.文件目录操作
最顶层止录是磁盘根目录,用'/'或'//'
当前目录 ./
../表示apache的目录即htdocs目录
1.创建与删除目录 mkdir
代码如下:
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 [, bool $use_include_path [, 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 $delimiter [, 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目录中
代码如下:

if(isset($_POST['up']))
{
if($_FILES['myFile']['type']=="image/gif") //判断文件格式是否为GIF
{
if($_FILES['myFile']['error']>0) //判断上传是否出错
echo "错误:".$_FILES['myFile']['error']; //输出错误信息
else
{
$tmp_filename=$_FILES['myFile']['tmp_name']; //临时文件名
$filename=$_FILES['myFile']['name']; //上传的文件名
$dir="html/";
if(is_uploaded_file($tmp_filename)) //判断是否通过HTTP POST上传
{
if(move_uploaded_file($tmp_filename,$dir.$filename)) //上传并移动文件
{
echo "文件上传成功!";
//输出文件大小
echo "文件大小为:". ($_FILES['myFile']['size']/1024)."kb";
}
else
echo "上传文件失败!";
}
}
}
else
{
echo "文件格式非GIF图片!";
}
}
?>

2.文件下载
header()函数的作用是向浏览器发送正确的HTTP报头,报头指定了网页内容的类型、页面的属性等信息。
header()函数的功能很多,这里只列出以下几点:
●页面跳转。如果header()函数的参数为“Location: xxx”,页面就会自动跳转到“xxx”指向的URL地址。例如:
header("Location: http://www.baidu.com"); //跳转到百度页面
header("Location: first.php"); //跳转到工作目录的first.php页面
●指定网页内容。例如,同样的一个XML格式的文件,如果header()函数的参数指定为“Content-type: application/xml”,
浏览器会将其按照XML文件格式来解析。但如果是“Content-type: text/xml”,浏览器就会将其看做文本解析。
header()函数结合readfile()函数可以下载将要浏览的文件
7.其他常用文件函数
1.计算文件大小
filesize()函数用于计算文件的大小,以字节为单位
filesize()函数结合fread()函数可以实现一次读取整个文件
2.判断文件是否存在
file_exits()
is_dir()函数用于判断给定文件名是否是目录
is_file()函数用于判断给定文件名是否是文件。
is_readable()函数用于判断给定文件是否可读。
is_writeable()用于判断给定的文件是否可写
3.删除文件
unlink()
4.复制文件
bool copy(string $source,string $dest),如果目示文件已存在,则将被覆盖
5.移动、重命名文件
除了move_uploaded_file()函数,还有一个rename()函数也可以移动文件。
语法格式如下:
bool rename ( string $oldname , string $newname [, resource $context ] )
说明:rename()函数主要用于对一个文件进行重命名,$oldname是文件的旧名,$newname为新的文件名。
当然,如果$oldname与$newname的路径不相同,就实现了移动该文件的功能
6.文件指针操作
PHP中有很多操作文件指针的函数,如rewind()、ftell()、fseek()函数等。之前用过的feof()函数用于测试文件指针是否处于文件尾部,
也属于文件指针操作函数。
rewind()函数。用于重置文件的指针位置,使指针返回到文件头。它的参数只有一个,就是已经打开的指定文件的文件句柄。
ftell()函数。可以以字节为单位,报告文件中指针的位置,也就是文件流中的偏移量。它的参数也是已经打开的文件句柄。
fseek()函数。可以用于移动文件指针,语法格式如下:
int fseek ( resource $handle , int $offset [, int $whence ] )
例4.8 投票统计
代码如下:






当前最流行的Web开发语言:
PHP
ASP
JSP
$votefile="EX4_6_vote.txt"; //用于计数的文本文件$votefile
if(!file_exists($votefile)) //判断文件是否存在
{
$handle=fopen($votefile,"w+"); //不存在则创建该文件
fwrite($handle,"0|0|0"); //将文件内容初始化
fclose($handle);
}
if(isset($_POST['sub']))
{
if(isset($_POST['vote'])) //判断用户是否投票
{
$vote=$_POST['vote']; //接收投票值
$handle=fopen($votefile,"r+");
$votestr=fread($handle,filesize($votefile)); //读取文件内容到字符串$votestr
fclose($handle);
$votearray=explode("|", $votestr); //将$votestr根据“|”分割
echo "

投票完毕!

";
if($vote=='PHP')
$votearray[0]++; //如果选择PHP,则数组第1个值加1
echo "目前PHP的票数为:".$votearray[0]."
";
if($vote=='ASP')
$votearray[1]++; //如果选择ASP,则数组第2个值加1
echo "目前ASP的票数为:".$votearray[1]."
";
if($vote=='JSP')
$votearray[2]++; //如果选择JSP,则数组第3个值加1
echo "目前JSP的票数为:".$votearray[2]."
";
//计算总票数
$sum=$votearray[0]+$votearray[1]+$votearray[2];
echo "总票数为:".$sum."
";
$votestr2=implode("|",$votearray); //将投票后的新数组用“|”连接成字符串$votestr2
$handle=fopen($votefile,"w+");
fwrite($handle,$votestr2); //将新字符串写入文件$votefile
fclose($handle);
}
else
{
echo "";
}
}
?>
推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
author-avatar
流行时尚吾诺饰品手_317
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有