入门PHP就来我这(高级)30~ 写文件

 有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享

路老师给大家分享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,失败则返回falsecopy('1.txt','../2.txt')
bool rename(string filename1,string filename2)把filename1重命名为filename2rename('1.txt','2.txt')
bool unlink(string filename)删除文件,成功返回true,失败返回falseunlink('./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 文件上传


 大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。

另外,自己创建的一个技术qq群,玩转技术群,目前手头里有一批项目,前后端人员都需要,兼职,有技术的你欢迎加入,一起学习成长。

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷心笑看丽美人

大哥大姐给点吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值