一.打开和关闭文件
1.fopen()
函数将resource绑定到一个流或句柄。绑定之后,脚本就可以通过句柄与此资源交互;
//以只读方式打开一个位于本地服务器的文本文件;
$fn = fopen("test.txt","r");
//以只读方式打开一个远程文件
$fn2 = fopen("http://www.baidu.com","r");
2.fclose(handle)
将 handle 指向的文件关闭 。如果成功则返回 TRUE,失败则返回 FALSE;虽然每个请求最后都会自动关闭文件,但明确的关闭打开的所有文件是一个好的习惯
fclose($fn)
二.读取文件
php 提供了很多从文件中读取数据的方法,不仅可以一次只读取一个字符,还可以一次读取整个文件。
-
1.fread(handle,length)函数从handle指定的资源中读取length个字符,当到达EOF或读取到length个字符时读取将停止。如果要读取整个文件,使用filesize(handle)函数获取文件的字数来应该读取的字符数;
-
2.fgets(handle)函数从handle指定的资源中读取一行字符。feof() 函数检测是否已到达文件末尾 (eof)。
-
3.file(url)函数将文件读取到数组中,各元素由换行符分隔。
-
4.filegetcontents(url)函数将文件内容读到字符串中;
//以只读的方法打开文件"text.txt";
$file = fopen("text.txt","r");
//读取$file中所有字符
$con1 = fread($file,filesize("text.txt"));
//输出
echo "$con1";
//声明一个空变量
$con2 = "";
//while循环获取读取整个文件
while(!feof($file)){
//如果未读取到文件结尾就一直读取,拼接,直到获取到文件结尾处
$con .- fgets($file);
}
echo "$con2";
// 将文件读取到数组中
$arr = file("text.txt");
//输出该数组
print_r($arr);
//将"text.txt"文件内容读取到字符串中
$con3 = file_get_contents(("text.txt"));
echo "$con3";
//关闭文件
fclose($file);
三.写入文件
fwrite(fandle,string,length)
函数将string的内容写入到由handle指定的资源中。如果指定length参数,将在写入Length个字符时停止
file_put_contents(url,str)
函数将一个字符串写入文件,与依次调用fopen(),fwrite(),fclose()功能一样
//以只写的方法打开"text.txt"文件
$file = fopen("text.txt","w");
//在该文件写入"输入的内容"
fwirte($file,"输入的内容");
//关闭该文件
fclose($file);
//此为以上代码缩写形式
file_put_contents("text.txt","写入的内容")
四.解析目录路径的函数
basename(path,suffix)
返回路径"path"中的文件名部分,当指定了可选参数suffix会将这部分内容去掉dirname(path)
返回路径"path"中的目录部分pathinfo(path)
返回一个关联数组,其中包括路径中得三个部分:目录名,文件名,扩展名$_SERVER["SCRIPT_FILENAME"]
获取当前文件路径
//声明路径为当前文件路径
$path = $_SERVER["SCRIPT_FILENAME"];
//获取当前文件名,去掉php后缀
$filename = basename($path,".php");
//输出当前文件名
echo "$filename";
//获取路径所在的目录
$dirname = dirname($path);
echo "$dirname";
//获取路径的关联数组
$arr = pathinfo($path);
print_r($arr);
//输出当前文件路径
echo $_SERVER["SCRIPT_FILENAME"];
五.其他文件操作函数
filesize(handle)
取得文件的小大,以字节为单位filectime(url)
取得文件的创建时间,以unix时间戳返回fileatime(url)
返回文件的最后改变时间;filemtime(url)
返回文件的最后修改时间;(注:"最后改变时间"不同于"最后修改时间".最后改变时间指的是对文件inode数据的任何改变,包括改变权限,所属组,拥有者等;而最后修改时间指的是对文件内容的修改);file_exists(url)
检查文件或者目录是否存在,返回bool值is_readable(url)
判断文件是否可读,返回bool值is_writable(url)
判断文件是否可写,返回bool值date_default_timezone_set("Asia/Shanghai")
时区设置date("Y-m-d H:i:s",time)
时间格式
//设置时区
date_default_timezone_set("Asia/Shanghai");
//获取文件的创建时间
$time = filectime("text.txt");
//设置时间的格式
echo date("Y-m-d H:i:s",$time);
//判断文件是否可读
if(is_readable("text.txt")){
echo "可读"
}else{
echo "不可读"
}
//判断文件是否可写
if(is_writeable("text.txt"){
echo "可写"
}else{
echo "不可写"
})
六.读取目录
opendir(url)
打开目录句柄closedir(handle)
关闭目录句柄readdir()
返回由dir_handle指定目录的各个元素,可以使用此函数列出给定目录中的所有文件和子目录,失败返回false;scandir(directory)
返回一个包含由 directory 指定路径中的文件和目录的数组,失败返回false;rmdir(pathname)
删除目录,注意:目录必须为空,否则报错;mkdir(pathname)
尝试新建一个由 pathname 指定的目录
//访问当前文件目录
$dir = opendir(".");
//用while循环获取当前目录的所有子目录
while($filename = readdir($dir)){
echo "$filename"."<br>";
}
//获取当前目录子目录文件数组
$arr = scandir(".");
print_r($arr);
//创建目录"abc"
mkdir("abc");
//删除目录
//rmdir("abc");
//获取子目录"abc"中的目录数组
$arr2 = scandir("abc");
print_r($arr2);
//删除 "abc" 里的所有文件
for( $i = 2 ; $i < count($arr); $i++){
echo "$arr[$i]";
unlink("abc/".$arr[$i]);
}
//删除"abc"目录
rmdir("abc");
七.复制移动删除文件
copy(source,dest)
将文件从cource拷贝到dest,如果成功则返回true,失败则返回falserename(oldname,newname)
改文件名,返回bool值unlink(url)
删除文件,返回bool值