有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享
路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。
上篇文章简单的了解了文件系统的概念,以及文件系统的文件的读取,文件内容的读取等函数及操作,本篇文章开始介绍文件的写操作。
1 将数据写入文件
写入数据是PHP中常用的文件操作,在PHP中使用fwrite()函数和file_put_contents()函数向文件中写入数据。
1.1 fwrite()函数
fwrite()函数也成为fputs()函数,它们的用法相同,fwrite()语法如下:
int fwrite(resource $handle, string $str [, int $length ])
<?php
$filepath = "./file/test.txt";
$str = "I love PHP";
$fopen = fopen($filepath,'wb') or die("文件不存在");
fwrite($fopen,$str);
fclose($fopen);
readfile($filepath);
?>
查看文件内容,发现已经写入了:
1.2 file_put_contents()函数
PHP5以后新增的写入文件的函数,其语法如下:
int file_put_contents (string $filename, mixed $data [, int $flags = 0 [, resource $context ]])
参数 | 说明 |
---|---|
filename | 要被写入数据的文件名 |
data | 要写入的数据。类型可以是string,array或者是stream资源 |
flags | flags的值可以是一下flag使用OR(|)运算符进行的组合: FILE_USE_INCLUDE_PATH:在include目录里搜索filename FILE_APPEND:如果文件filename已经存在,追加数据而不是覆盖 LOCK_EX:在写入时获得一个独占锁 |
context | 一个context上下文资源 |
<?php
$filepath = "./file/test.txt";
$str = "I love PHP7";
file_put_contents($filepath,$str);
readfile($filepath);
?>
打开写入内容的文件 ,查看结果如下:
注意:使用file_put_contents()函数和依次调用fopen()函数、fwrite()函数、fclose()函数的功能是一样的。
2 操作文件
除了可以对文件内容进行读写,对文件本身同样也可以进行操作,如复制、重命名、查看修改日期等。PHP内置了大量的文件操作函数,常用的文件操作函数如下表所示:
函数原型 | 函数说明 | 举例 |
---|---|---|
bool copy(string path1, string path2) | 将文件从path1复制到path2.如果成功返回true,失败则返回false | copy('1.txt','../2.txt') |
bool rename(string filename1,string filename2) | 把filename1重命名为filename2 | rename('1.txt','2.txt') |
bool unlink(string filename) | 删除文件,成功返回true,失败返回false | unlink('./1.txt') |
int fileatime(string filename) | 返回文件最后一次被访问的时间,时间以UNIX时间戳的方式返回 | fileatime("1.txt") |
int filemtime(string filename) | 返回文件最后一次被修改的时间,时间以UNIX时间戳的方式返回 | date('Y-m-d H:i:s',filemtime("1.txt")) |
array pathinfo(string name [, int options]) | 返回一个数组,包含文件name的路径信息。有dimame、basename和extension。可以通过option设置要返回的信息,有PATHINFO_DIRNAME、PATHINFO_BASENAME和PATHINFO_EXTENSION。默认返回全部 | $arr = pathinfo("/file/demo/1/1.txt"); foreach($arr as $method=> $value){ echo $method.":".$value."<br>"; } |
string realpath(string filename) | 返回文件的绝对路径 | realpath("1.txt") |
array stat(string filename) | 返回一个数组,包括文件的相关信息,如上面提到的文件大小、最后修改时间等 | $arr = stat("/file/demo/1/1.txt"); foreach($arr as $method=> $value){ echo $method.":".$value."<br>"; } |
int filesize(string filename) | 获得文件的大小(bytes) | filesize("1.txt") |
3 目录处理
目录是一种特殊的文件。要浏览目录下的文件,首先要打开目录,浏览完毕后,同样要关闭目录。目录的处理包括打开目录、浏览目录和关闭目录以及目录的相关操作。
3.1 打开目录
PHP使用opendir()函数来打开目录,函数语法如下:
resource opendir(string $path [, resource $context])
函数opendir()参数path是一个合法的目录路径,成功执行后返回目录的指针;如果path不是一个合法的目录或者因为权限或者文件系统错误而不能打开目录,返回false,并产生一个E_WARNING级别的错误信息。可以在opendir()函数前面加上“@”符号来抑制错误信息的输出。
<?php
$path = "./file/";
if(is_dir($path)){
if($dire = opendir($path)){
echo $dire;
}
}else{
echo "路径错误";
exit();
}
?>
输出目录的指针:
3.2 关闭目录
关闭目录采用closedir()函数,函数语法如下:
void closedir([resource $dir_handle])
下列实现关闭已经打开的文件目录:
<?php
$path = "./file/";
if(is_dir($path)){
$dire = opendir($path);
}
closedir($dire);
echo $dire."已经关闭!";
?>
3.3 浏览目录
PHP采用scandir()函数来浏览目录,语法如下:
array scandir(string directory [, int sorting_order])
本地创建一个目录,并随便截几张图放到里面,利用scandir()来浏览目录内的文件:
<?php
$path = "C:\\Users\\10784\\Desktop\\知乎\\PHP\\图书管理系统";
if(is_dir($path)){
$dire = scandir($path);
foreach ($dire as $value) {
echo $value."<br>";
}
} else {
echo "路径错误";
}
?>
输出结果如下:
3.4 操作目录
目录是一个特殊的文件,也就是说,对文件的操作处理函数多数同样适用于目录。但还有一些特殊的函数只针对目录进行操作,如下表:
函数原型 | 函数说明 | 举例 |
---|---|---|
bool mkdir(string pathname) | 新建目录 | mkdir('temp') |
book rmdir(string dirname) | 删除指定目录,该目录必须是空的 | rmdir('tmp') |
string getcwd(void) | 获取当前工作的目录 | getcwd() |
bool chdir(string directory) | 改变当前目录为directory | echo getcwd()."<br>"; chdir("../"); echo getcwd()."<br>"; |
float disk_free_space(string directory) | 返回目录中的可用空间(bytes)。被检查的文件必须通过服务器的文件系统访问。 | disk_free_space("E:\\temp"); |
float disk_total_space(string directory) | 返回目录的总空间大小(bytes) | disk_total_space("E:\\temp"); |
string readdir(resource handle) | 返回目录中下一个文件的文件名(使用此函数时,目录必须是使用opendir()函数打开的),在PHP5之前都是使用这个方法来浏览目录的。 | while(false !== ($path=readdir($handle))){ echo $path; } |
void rewinddir(resource handle) | 将指定的目录重新指定到目录的开头 | rewinddir($handle) |
下一篇 PHP 文件上传
大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。