php 读取 写入 文件 函数

<?php

/*  PHP文件系统处理
 *    所有文件处理都是使用系统函数完成的。
 *    是基于Linux/Unix系统为模型
 *
 *      文件系统处理的作用:
 *          1. 所有的项目离不开文件处理
 *          2. 可以用文件长时间保存数据
 *          3. 建立缓存, 服务器中文件操作
 *
 *      文件处理
 *        1. 文件类型
 *            以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型
 *            在Linux/Unix下, block, char, dir, fifo, file, link, unknown和种型
 *            block :块设置文件,磁盘分区,软驱, cd-rom等
 *            char: 字符设备,I/O 以字符为单位, 键盘,打印机等
 *            dir: 目录也是文件的一种
 *            fifo:
 *            file:
 *            link:
 *            unknown   
 *
 *             filetype("目录或文件名")
 *
 *             is_array();
 *             is_int();
 *             is_string();
 *             is_null;
 *             is_bool();
 *            
        is_dir -- 判断给定文件名是否是一个目录
        is_executable -- 判断给定文件名是否可执行
        is_file -- 判断给定文件名是否为一个正常的文件
        is_link -- 判断给定文件名是否为一个符号连接
        is_readable -- 判断给定文件名是否可读
        is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
        is_writable -- 判断给定的文件名是否可写
        is_writeable -- is_writable() 的别名
 *           
 *
 *        2. 文件的属性
 *            file_exists();
 *            filesize();
 *            is_readable();
 *            is_writeable();
 *            filectime();
 *            filemtime();
 *            fileactime();
 *            stat();
 *
 *        3. 和文件路径相关的函数
 *           
 *            相对路径:相对于当前目录的上级和下级目录
 *                .  当前目录
 *                .. 上一级目录
 *
 *                ./php/apache/index.php
 *                php/apahce/index.php
 *                login.php
 *                ./login.php
 *                ../images/tpl/logo.gif
 *           
 *
 *            路径分隔符号
 *                linux/Unix    "/"
 *                windows       "\"
 *
 *                DIRECTORY_SEPARATOR  为不同平台,在Windows \ Linux /
 *
 *                不管是什么操作系统PHP的目录分割符号都支技 / (Linux)
 *
 *                在PHP和Apache配置文件中如果需要指定目录,也使用/作为目录符号
 *
 *            绝对路径:
 *                / 根路径
 *
 *                /images/index.php
 *
 *                指的操作系统的根
 *                指的是存放网站的文档根目录
 *               
 *                              分情况
 *
 *                              如果是在服务器中执行(通过PHP文件处理函数执行)路径 则 “根”指的就是操作系统的根
 *                如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”也就指的是文档根目录
 *
 *                http://www.xsphp.com/logo.gif
 *
 *
 *            basename(url)
 *            dirname(url)
 *            pathinfo(url)
 *       
 *
 *
 *       
 *        4. 文件的操作相关的函数(
 *
 *            创建文件 touch("文件名")
 *            删除文件 unlink("文件路径");
 *            移动文件 为文件重新命名 rename("当前文件路径", “目录为文件路径”)
 *            复制文件 copy("当前", “目标”);
 *           
 *            一定要有PHP执行这个文件权限, Apache, 一个用户
 *
 *
 *        和权限设计有关的函数
 *
 *
        ls -l  或 ll

        _rwxrwxrwx   777

        _ 类型 _文件  d 表示是目录  l  b  

        rwx 表这个文件的拥有者  r读 w写 x执行   
        rwx 表这个文件的拥有者所在的组  r读 w写 x执行
        rwx 其它用户对这个为文件的权限  r读 w写 x执行

        r 4
        w 2
        x 1

        7 7 7  4+2+1  4+2+1 4+2+1
            rwx   rwx  rwx
       
        644
            4+2   4   4
            rw_  r__ r__
        754
           
        chmod u=rwx,g=rw,o=x
        chmod 777  demo.php
        chmod 644  demo.html

        chown  mysql demo.php

        chgrp  apache demo.php

chgrp -- 改变文件所属的组
chmod -- 改变文件模式
chown -- 改变文件的所有者

filegroup -- 取得文件的组
fileowner -- 取得文件的所有者


 *           
 *
 *        5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)
 *            读取文件中的内容
 *                file_get_contents(); //php5以上
 *                file()
 *                readfile();
 *
 *                    不足:全部读取, 不能读取部分,也不能指定的区域
 *
 *                fopen(URL, mode)
 *
 *            本地文件:
 *                ./test.txt
 *                c:/appserv/www/index.html
 *                /usr/local/apahce/index.html
 *
 *            远程:
 *                http://www.baidu.com
 *               
 *                fopen("./test.txt", "a+")
 *
 *                    fwrite fread
 *
 *                 r , 以只读模式打开文件
 *                 r+  写
 *                 w, 以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则会清除原文件中所有内容,再写入(打开已有的重要文件)
                w+ 除了可以写用fwrite, 还可以读fread
 *                 a   以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则不清除原有文件内容,再原有文件内容的最后写入新内容,(追加)
 *                 a+除了可以写用fwrite, 还可以读fread
 *                 b 以二进制模式打开文件(图,电影)
 *                 t 以文本模式打开文件
 *                    fread()  // 第一个是读取指定长度的字符
 *                    fgetc()  //一次从文件中读取一个字符
 *                    fgets()  //一次从文件中读取一行字符
 *                   
 *
 *                        feof($file); 如果读取文件出错,或到文件结束,则返回真
 *
 *            写入文件
 *                file_put_contents(“URL”, “内容字符串”);  //php5以上
 *                    如果文件不存在,则创建,并写入内容
 *                    如果文件存在,则删除文件中的内容,重新写放
 *
 *                    不足: 不能以追加的方式写,也不能加锁
 *                        
 *                fopen()
 *                    fwrite() 别名 fputs
 *
 *                    第一个参数是文件资源(fopen返回来的),第个参数是写的内容
 *
 *
 *            本地文件:
 *                ./test.txt
 *                c:/appserv/www/index.html
 *                /usr/local/apahce/index.html
 *
 *            远程:
 *                http://www.baidu.com
 *                http://www.163.com
 *
 *                 ftp://user@pass:www.baidu.com/index.php
 *
 *        6. 文件内部移动指针
 *            ftell($file) //返回当前文件针的位置
 *
 *            fseek($file, 10);
 *
 *            fread();
 *
 *            rewind();
 *
 *           
 *        7. 文件的锁定一些机制处理
 *   
 *
 *      目录的处理
 *          1. 目录的遍历
 *          2. 目录的创建
 *          3. 目录的删除
 *          4. 目录的复制
 *        5. 统计目录大小
 *
 *
 *      文件上传和下载
 *          1. 上传
 *          2. 下载
 *
 *
 */
$pdo=new PDO("mysql:host=localhost;dbname=zsc_test","root","root");
$result = $pdo->query("select * from users");
$arr= $result->fetchAll();
$str = serialize($arr);
$fname = 'datainfo.txt';
$path = '/aa/'.$fname;
$data = '789';
$dd = _rwfile($path,$method='r',$data);

var_dump($dd);

 

/**
 * 读文件...
 *
 * @param unknown_type $file_name
 * @param unknown_type $data
 * @param unknown_type $method
 * @return unknown
 */
function _rwfile($path,$method,$data){ 
 $info = null; 
 $time = 10;
 if($method == 'r'){ 
     if(is_file($path)){
       $times = fileatime($path);
       $timee = time();    
       $flag = $timee - $times > $time;
       if($flag){
          $info = _writefile($path,$data);
        }else{
        $info = _readfile($path);
    }
  }
 }else{
  $info = _writefile($path,$data);
 }
 return $info;
}
function _readfile($fname)
{    
  $fileNum = fopen($fname,'r');
  flock($fileNum,LOCK_EX);
  $file_data = fread($fileNum,filesize($fname));
  rewind($fileNum);
  fclose($fileNum);
  return $file_data;
 
 }
 function _writefile($fname,$data){
 if(!empty($data)){
      $fileNum = fopen($fname,'w');
      flock($fileNum,LOCK_EX);
      fwrite($fileNum,$data);
      fclose($fileNum);
      return $data;
    }
 }
?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值