文件处理的3个步骤:
1、打开文件
2、从文件里读取数据、或者写入数据
3、关闭文件
实例1:
<meta charset="utf-8"> <form method="post" action="file.php" id="myForm"> <center>请输入记事内容</center> <textarea name="text" rows="5" cols="35" id="text">------请输入记事内容------</textarea> <br> <input type="submit" value="保存"> </form> <?php //file.php header("Content-type:text/html;charset=utf8"); if($_POST['text']){ $text = $_POST['text']; // 建立文件链接 $fp = fopen('./log.txt','a'); fwrite($fp,$text); fclose($fp); echo "<script>alert('保存成功');location='arr1.php';</script>"; }
实例2:
//通过使用超全局数组$_SERVER来确定本系统文件的根目录 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']."/PHP"; $username = $_POST['username']; $gender = $_POST['gender']; $phone = $_POST['phone']; if($gender == "m"){ $customer = "先生"; }else{ $customer ="女士"; } //$date为用date()函数处理的写入信息时的系统时间 $data = date("H:i:s Y-m-d"); $string_to_be_added = $data."\t".$username."\t".$customer."\t".$phone; // fopen(打开的文件或url,文件流) $fp = fopen("$DOCUMENT_ROOT/booked.txt",'ab'); // fwrite(要写入的打开文件,写入的字符串,最大字节数(可选)) if(fwrite($fp, $string_to_be_added, strlen($string_to_be_added))) { echo $username."\t".$customer.",您的订房信息已经保存,我们稍后与你联系"; }else{ echo "信息保存错误"; } //用fclose()函数关闭文件 fclose($fp);
打开文件 ,建立链接
resource fopen(string filename, string mode,[,int use_include_path [,resource zcontext]])
mode 参数如下:
"r" 只读方式打开,将文件指针指向文件头。
"r+" 读写方式打开,将文件指针指向文件头。
"w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"x"
创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
"x+"
创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
写入文件
fwrite($fp,$text)
关闭文件链接
fclose($fp)
filetype判断文件类型
string filetype(string $filename)
filename表示文件的路径 改函数返回文件的类型
可能的值有fifo char dir block link file unknown
如果出错返回false
echo filetype('test.php');
还可以使用 is_dir判断文件名是否为一个目录
创建和删除目录
bool mkdir(string $pathaneme [,int $mode = 0777 [,bool $recursive = false [,resource $content]]])
pathname 指定的目录
mode 最大的访问权限
recursive 为true表示允许递归创建目录
$strpath = './demo1/demo2/'; if(!mkdir($strpath,0777,true)){ die('失败'); }else{ echo "创建成功"; }
删除目录
bool rmdir(string $pathname,[, resource $context])
所删除的目录必须为空目录 且有相应的权限
$strpath = './demo1/demo2/'; if(!rmdir($strpath)){ die('失败'); }else{ echo "删除成功"; //删除demo2文件夹 }
opendir()打开目录
resource opendir(string path [,resource context])
读取句柄中的条目
readdir([resource $dir_handle])
关闭目录句柄
closedir([resource $dir_handle])
$dir = '/demo1/demo2'; if (is_dir($dir)) { if($dh = opendir($dir)){ while(($file = readdir($dh)) !== false){ echo "filename:$file;filetype:".filetype($dir.$file)."\n"; } closedir($dh); } }
修改文件或目录的扩展名
bool rename(string oldname, string newname)
oldname为具体的文件或目录的路径,newname为修改后的名称
成功返回真,失败返回假
实例1
<meta charset="utf-8"> <form method="post" action="rename.php"> <center>请选择</center> <input type="file" name="path"> <br> 输入新的文件名: <input type="text" name="name"> <input type="submit" value="更改"> <center>注意:文件名需要带有扩展名</center> </form> <?php header("Content-type:text/html;charset=utf8"); if($_POST['name']){ $path = $_POST['path']; $rename = $_POST['name']; $arr = explode('.',$rename); if(count($arr) >= 2){ if(rename($path,$rename)){ echo "<script>alert('修改成功')</script>"; }else{ echo "<script>alert('修改失败')</script>"; } } }