向文件内写内容

来源:2-7 文件读写函数封装

呼___吸

2017-10-13 12:39:18

我运行着段代码向文件内写内容,它是添加到之前内容的前面,不是添加在后面,而且也不换行,为什么?
还有bool $clearFlag=false是怎么用到的 ???????

运行结果

http://img1.sycdn.imooc.com/climg/59e042ea0001035e06310198.jpg

http://img1.sycdn.imooc.com/climg/59e042eb0001f3fd05670161.jpg


function write_file1(string $filename,$data,bool $clearFlag=false){

  $dirname=dirname($filename);

  //检测文件路劲是否存在$filename

  if(!file_exists($dirname)){

    mkdir($dirname,0777,true);

  }

  //检测文件是否存在和可读

  if(is_file($filename)&&is_readable($filename)){

    //读取文件中的内容

    if(filesize($filename)>0){

      $srcData=file_get_contents($filename);

    }

  }

  //检测写入的内容是否是数组或对象

  if(is_array($data)&&is_object($data)){

    $data=serialize($data);

  }

  //拼装到一起

  $data=$data.$srcData;

  //想文件中写入内容

  if(file_put_contents($filename,$data)!==false){

    return true;

  }

  return fasle;

}

 var_dump(write_file1('text2222.txt','this is kuo!'));






写回答

1回答

imooc_澈

2017-10-13

您好,老师讲解的意思是可以使用这个变量来决定我们的写入的内容是追加还是覆盖。不过当前代码中并没有使用$clearFlag来判断,而是直接用 $data=$data.$srcData;语句将新内容与原来的内容拼装到一起了,并且赋值符号右边的$data为新内容,$srcData为原来的内容,这样一来,新内容就放在了原来内容的前面,然后再放入文件,也就是您所述的没有添加在后面,而是添加再了前面的原因。至于换行,与您打开文件的工具本身设置有关系。修正部分代码参考如下:

一是进行判断,二是调换新老数据的拼接位置

//判断如果$clearFlag为false则拼装到一起
if($clearFlag==false){
   $data=$srcData.$data;
}

如果解决了您的问题,请采纳,祝学习愉快~


0

0 学习 · 2569 问题

查看课程