PHP的文件与目录操作

点击下载此文件1

不仅是用PHP设计程序,用其他的语言设计程序也离不开对文件的操作。文件的操作在很多web 系统中被
反复用到。
在PHP的实际应用中会遇到文件和目录的创建、修改和删除等。
PHP中对目录的操作
在PHP对目录操作,其实也就是对文件夹(操作系统用于管理文件的群组)进行操作。
打开目录
PHP中打开目录的函数为opendir,语法如下:
Opendir(string path)
该函数返回一个资源对象,其中path 为路径。
例如:
<?php
$dir = “php/”;
if(is_dir($dir)) //is_dir 函数判断路径的有效性,其语法如下:bool is_dir(string path)
$dir_res = opendir($dir);
else
echo “目录不存在或者不是一个有效的目录”;
?>
关闭目录
PHP中关闭目录的函数为closedir,语法如下:
Void closedir(dir_resource)
dir_resource 指的是使用opendir 函数返回的资源对象。
例如:
<?php
Closedir($dir_res);
?>
如何创建目录
PHP中创建目录的函数为mkdir,语法如下:
Bool mkdir(string pathname)
Pathname 为要创建的目录的地址。
例如:
<?php
2
$dir = “php/”;
if(!is_dir($dir))
mkdir($dir);
?>
可以看到,在存放这段代码的文件夹下创建了一个PHP 文件夹。
如何读取目录中的文件
PHP中读取目录中的文件的函数为readdir,语法如下:
String readdir(dir_resource)
dir_resource 指的是使用opendir 函数返回的资源对象。该函数按照文件系统的文件排序返回文件名。
例如:
<?php
$dir = “php/”;
$dir_res = opendir($dir);
while($filen = readdir($dir_res ))
{ echo $
filen.”<br>”;
} closedir($dir_res);
?>
结果:
. ..P
hp.txt
注意:“.”表示当前目录,“..”表示上一级目录。
删除目录
PHP中删除目录的函数为rmdir,语法如下:
Bool rmdir(string pathname)
Pathname 为要删除的目录地址。
例如:
<?php
$dir = “php/”;
if(is_dir($dir))
rmdir($dir);
?>
注意:删除目录时,目录中必须是空的。
PHP对文件的操作
在PHP中,文件不仅指的是本地文件还包括远程文件。
打开文件
3
PHP中打开文件的函数为fopen,该函数将返回一个资源对象,以存储当前的文件资源,语法如下:
Fopen(string filename,string mode)
Filename 为文件名或者文件所在的路径,mode 为文件的打开模式。
Fopen 函数中mode 参数的取值
Mode 的值说明
r 只读方式打开,文件指针指向文件头
r+ 读写方式打开,将文件指针指向文件头
w 写入方式打开,如果文件存在则清空,不存在则创建
w+ 读写方式打开,如果文件存在则清空,不存在则创建
a 写入方式打开,如果文件存在则追加,不存在则创建
a+ 读写方式打开,如果文件存在则追加,不存在则创建
x 写入方式打开,如果文件存在则打开失败,不存在则创建
x+ 读写方式打开,如果文件存在则打开失败,不存在则创建
关闭文件
PHP中关闭文件的函数为fclose,语法如下:
Void fclose(file_resource)
file_resource 为使用fopen 函数后返回的资源对象。
例如:
<?php
$file = fopen(“php\\php.txt”,”r”);
echo fgetc($file);
fclose($file);
?>
写入文件
PHP中写入文件的函数为fclose,语法如下:
Int fclose(file_resource,string str [,int length])
file_resource 为使用fopen 函数后返回的资源对象,str 为要写入的字符串,length 为指定的字符串长度。
例如:
<?php
$filename = “php\\php.txt”;
$file = fopen($filename,”w”);
fwrite($file,”This is www.phpdo.net\n”);
fwrite($file,”This is a php test\n”);
fclose($file);
?>
打开文件夹,可以看到里边有两行语句:This is www.phpdo.net 和This is a php test。
读取文件
在PHP中最常用的读取文件的函数有三个:fgetc、fgets 和fread。
Fgetc 函数用于读取文件中的一个字符,语法如下:
4
String fgetc(file_resource)
file_resource 为使用fopen 函数后返回的资源对象,该函数返回文件中的一个字符并将指针移动到下一个字
符。
例如:
<?php
$file = fopen(“php\\php.txt”,”r”);
echo fgetc($file);
fclose($file);
?>
结果:T。
Fgets 函数用于读取文件中的一行字符,语法如下:
String fgets(file_resource)
file_resource 为使用fopen 函数后返回的资源对象,该函数返回文件中的一行字符并将指针移动到下一行。
例如:
<?php
$file = fopen(“php\\php.txt”,”r”);
echo fgets($file);
fclose($file);
?>
结果:
This is www.phpdo.net
Fread 函数用于读取文件中的任意字符,语法如下:
String fread(file_resource,int length)
file_resource 为使用fopen 函数后返回的资源对象,length 为将要读取的字符串长度。
例如:
<?php
$file = fopen(“php\\php.txt”,”r”);
echo fread($file,26);
fclose($file);
?>
结果:
This is www.phpdo.net This
可以看到,文件并没有完全被输出,这种情况下应该怎么办呢?
使用filesize 函数获取文件全部内容,然后返回文件的字节数,语法如下:
Int filesize(string filename)
例如:
5
<?php
$filename = “php\\php.txt”;
$file = fopen($filename,”r”);
$filesize = filesize($filename);
echo fread($file,$filesize);
fclose($file);
?>
结果:
This is www.phpdo.net This is a php test
复制文件
PHP中复制文件的函数为copy,语法如下:
Bool copy(string filename1,string filename2)
Filename1为源文件和其路径,filename2为目标文件及其路径。
例如:
<?php
$filename1 = “php\\php.txt”;
$filename2 = “php\\php2.bak”;
copy($filename1 ,$filename2);
?>
可以看到,在PHP.txt 文件的旁边出现了一个php2.bnk 文件。
删除文件
PHP中删除文件的函数为unlink,语法如下:
Bool unlink(string filename)
Filename 为文件的名称及其路径。
例如:
<?php
$filename = “php\\php2.bak”;
unlink($filename);
?>
可以看到,php2.bnk 文件被删除了。
PHP对本地文件操作实例——留言本
在使用PHP编程前,需要对自己的项目有想法。留言本有什么功能呢?毫无疑问,留言。留言之后,还应该
让客户查看其留言。
功能实现
这个PHP 留言本都该有什么呢?
6
用户发表的标题
用户的注册名
发表的内容
到此就清楚了,留言本的实现需要两个模块:一个静态html 页面,提供表单供用户输入和一个php 页面,用
于接收用户的输入并将结果保存。
以下是html 页面,Post.html :
<html>
<head>
<title>www.phpdo.net 的留言本实战</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
</head>
<body>
<h1><p align=”center”>www.phpdo.net 的留言本</p></h1>
<form method=”post” action=”Post.php”>
<table width=”500″ border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″>
<tr>
<td>标题</td>
<td><input size=”50″></td>
</tr>
<tr>
<td>作者</td>
<td><input size=”20″</td>
</tr>
<tr>
<td>内容</td>
<td><textarea cols=”50″ rows=”10″></textarea></td>
</tr>
</table>
<p align=”center”>
<input value=”Submit”>
<input value=”Reset”>
</p>
</form>
</body>
</html>
PHP页面的实现,文件名为Post.php :
<?php
$path = “post/”; //指定存储路径
$filename = “S”.date(“YmdHis”).”.dat”; //由当前时间产生文件名
$fp = fopen($path.$filename,”w”); //以写方式创建并打开文件
fwrite($fp, $_POST["title"].”\n”); //写入作者
fwrite($fp, $_POST["author"].”\n”); //写入作者
fwrite($fp, $_POST["content"].”\n”); //写入内容
fclose($fp);
echo “您在www.phpdo.net 的留言发表成功”; //提示留言发表成功
echo “<a href=’Index.php’>返回首页</a>”;
?>
在post.htnl 页面内输出内容,可以看到,在post 文件夹下多处了一个文件。
显示留言
Display.php 代码如下:
<?php
$path = “post/”; //定义路径
7
$dr = opendir($path); // 定义目录
while($filen = readdir($dr)) //循环读取目录中的文件
{ if($filen != “.” and $
filen != “..”)
{
$fs = fopen($path.$filen,”r”);
echo “<B>标题: </B>”.fgets($fs).”<BR>”;
echo “<B>作者: </B>”.fgets($fs).”<BR>”;
echo “<B>内容: </B><PRE>”.fread($fs,filesize($path.$filen)).”</PRE>”;
//<PRE>被包围在pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。
echo “<HR>”; //输入一条线用来隔开每条留言
fclose($fs);
}} closedir($dr); //关
?>


上一篇: PHP5文件的操作
下一篇: 2012年最新中国网民地域分布
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: php
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1903
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑