【代码总结】文件的基本操作

--------------------------------

        文件的基本操作

------------------------------------

一、文件的打开和关闭

1、打开文件

  fopen(文件名,打开模式)

 1 /*
 2 r: 只读模式打开文件,文件指针执行首位。
 3 r+: 可读可写模式打开文件,文件指针执行首位,若文件指针不是在最后,则是覆盖写。
 4 w:  以写方式打开文件,文件内容清空,若文件不存在,则尝试创建。
 5 w+: 以写和读方式打开文件,文件内容清空,若文件不存在,则尝试创建。(也会覆盖写)
 6 a:  以追加内容方式打开文件,指针移至最后,若文件不存在,则尝试创建。
 7 a+: 以追加内容和可读方式打开文件,指针移至最后,若文件不存在,则尝试创建。
 8 x:  以创建方式打开文件,可写。若文件已存在,则报错。
 9 x+: 以创建方式打开文件,可写可读。若文件已存在,则报错。
10 */

  模式:读(r,r+)、清空写(w/w+)、追加写(a/a+)、创建模式(x,x+)

2、文件关闭

1 fclose() //打开之后一定要关闭文件                                                                                                                                    

二、读取文件内容

1 fread(打开的文件资源,读取的长度)   //读取指定长度的字符串
2 fgetc()    //读取一个字符
3 fgets()    //读取一行字符
4 file()     //不需要打开文件,可直接文件内容
5 readfile() //不需要打开文件,文件内容读取并输出
6 file_get_contents() //不需要打开文件,读取文件内容
7 file_put_contents() //不需要打开文件,将指定内容写入文件

三、写入文件内容

 1 fwrite(打开的文件资源,被写入的字串[,长度])                                                                                                                          

 四、访问远程文件

如果访问远程文件,必须在PHP配置文件中记过"allow_url_fopen"选项

 1 <?php
 2 //通过HTTP打开远程文件
 3 $file = fopen('http://www.xxx.com/','r') or die('打开远程文件失败');
 4 //循环从文件中读取的内容
 5 while (!feof ($file)){
 6     //读取一行
 7     $line = fgets($file,1024);
 8     //如果找到远程文件中的标题标记则取出标题,并推出循环,不再读取文件
 9     if(preg_match('/title(.*)</title>/',$line,$out)){
10         //将标题标记中的标记符取出
11         $title = $out[1];
12         //结束循环
13         break;
14     }
15 }
16 //关闭文件资源
17 fclose($file);
18 //输出标题
19 echo $title;
20 ?>

四、文件指针操作

    ftell() --返回文件指针的位置
    fseek() --设置文件指针的位置
    rewind()  --将文件指针移至首位

1 ftell($f)               //输出刚打开的默认位置,指针显示为0
2 fseek($f,-2,SEEK_CUR);  //从当前指针位置开始,向前移动2位
3 fseek($f,2,SEEK_SET);   //从文件指针开始位置,向后移动2位
4 fseek($f,-5,SEEK_END);  //从文件指针的最后位置开始,向前移动5位
5 rewind($f)              //移动到指针的开头

 五、文件的锁定机制

当一个进程在访问文件时加上锁,其他进程想要对该文件进行访问,则必须等到锁定被释放以后。这样可以避免在访问同一个文件时破坏数据

bool flock ( int $handle , int $operation [, int &$wouldblock ] )
        轻便的咨询文件锁定
      operation参数:
        LOCK_SH:取得共享锁定(从文件中读取数据时使用)
        LOCK_EX:取得独占锁定(向文件中写入数据时使用)
        LOCK_UN:释放锁定(无论共享或独占锁,都用它释放)
         LOCK_NB:附加锁定(如果不希望flock()在锁定时堵塞,则应在上述锁定后加上该锁 )

 1 <?php
 2 $fp = fopen("/tmp/lock.txt", "w+");
 3 //向文件中写入数据时使用
 4 if(flock($fp,LOCK_EX)){
 5     fwrite($fp,"Write something here");
 6     //释放锁定
 7     flock($fp,LOCK_UN)
 8 }else{
 9     echo "Couldn't lock the file !";
10 }
11 fclose($fp);
12 ?>

 六、文件的一些基本操作函数

  1、copy(来源文件,目的文件)     --复制文件

1 <?php
2 if(copy('./file1.txt'),'../data/file2.txt'){
3     echo '文件复制成功';
4 }else{
5     echo '文件复制失败';
6 }
7 ?>

  2、unlink()        --删除文件

 1 <?php
 2 $filename =  "file1.txt"
 3 if(file_exists($filename)){
 4     if(unlink($filename)){
 5         echo '文件删除成功';
 6     }else{
 7         echo '文件删除失败';
 8     }
 9 }else{
10     echo '目标文件不存在';
11 }
12 ?>

  3、rename(源文件名,修改的文件名)  --重命名文件

1 <?php
2 if(rename('./demo.php','./demo1.php')){
3     echo '文件重命名成功';
4 }else{
5     echo '文件重命名失败';
6 }
7 ?>

  4、ftrunacte(目标文件,截取长度)   --将文件截取到指定的长度

1 <?php
2 $fp = fopen('./data.txt','r+') or die ('文件打开失败');
3 if(ftruncate($fp,1024)){
4     echo '文件截取成功';
5 }else{
6     echo '文件截取失败';
7 }
8 ?>

 七、思维导图

原文地址:https://www.cnblogs.com/sqyysec/p/6736694.html