文件处理的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>";
}
}
}