文件系统处理

Posted Irving_yx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统处理相关的知识,希望对你有一定的参考价值。

1.文件类型
    在Windows系统下php只能获得三种文件类型:文件(file)、目录(dir)、未知(unknown)
    在UNIX系统下PHP可以获取七种文件类型:块设备(block)、字符设备(char)、目录(dir)、命名管道(fifo)、文件(file)、符号链接(link)和未知类型(unknown)
    函数:
        filetype()函数获取文件类型
        is_dir()判断给定的文件名是否是一个目录
        is_file()判断给定的文件名是否是一个正常文件
2.文件属性
    在编写程序时,经常需要用到诸如文件大小,文件类型,文件修改时间等常见属性
        file_exists() 检查文件或目录是否存在
        filesize() 取得文件大小
        is_readable() 判断给定文件是否可读
        is_writeable() 判断给定文件是否可写
        is_executable() 判断给定的文件是否可执行
        filectime() 获取文件的创建时间
        filemtime() 获取文件的修改时间
        fileatime() 获取文件的访问时间
        stat() 获取文件大部分属性值

1 <?php 
2 $file=stat("file.php");
3 //只打印其中的管理数组,第13个元素以后为关联数组
4 print_r(array_slice($file,13));
5 ?>

 


3.目录的基本操作
    Windows下路径:
      绝对路径:$path="D:\\wamp\\www\\phpWork\\index.php";(默认)
      $path="D:/wamp/www/phpWork/index.php";(支持、建议)
      相对路径:$path="./images/logo.png";
    UNIX下路径:
      绝对路径:$path="/var/www/phpWork/index.php";
      相对路径:$path="images/logo.png";
    1>关于路径的4个函数
      basename()返回路径中的文件名部分
      string basename(string path [,string suffix])
      dirname()返回去掉文件名后的目录名
      pathinfo()返回一个关联数组,包括指定路径中的目录名、基本名和扩展名三个部分,分别通过dirname、basename、extension来引用
      realpath()获取指定文件的绝对路径
    2>目录的遍历
      *opendir("") -- 打开一个目录,返回此目录的资源句柄
      *readdir(资源句柄) -- 从目中读取一个目录或文件,并指针向下移动一位。
      *closedir(资源句柄)-- 关闭打开的目录
      rewinddir(资源句柄) -- 倒回目录指针(移至首位)
    3>统计目录大小
      echo "当前磁盘可用大小:".(disk_free_space("./")/1024/1024/1024)."G<br/>";
      echo "当前磁盘共计大小:".(disk_total_space("./")/1024/1024/1024)."G<br/>";
      计算文件大小可以通过filesize()函数完成
    4>目录操作与文件拷贝
      *mkdir() -- 创建一个目录
      *rmdir() -- 删除一个目录(只支持删除空目录)
      *unlink() -- 删除一个文件
      copy() --- 复制文件。不支持目录复制
4.文件的基本操作
    *1. fopen(文件名,打开模式) ---打开一个文件
      模式:读(r、r+)、 清空写(w/w+), 追加写(a/a+)、 创建模式(x,x+)
      *打开模式: *r: 只读模式打开文件,文件指针执行首位。
      r+: 可读可写模式打开文件,文件指针执行首位,若文件指针不是在最后,则是覆盖写。
      *w: 以写方式打开文件,文件内容清空,若文件不存在,则尝试创建。
      w+: 以写和读方式打开文件,文件内容清空,若文件不存在,则尝试创建。(也会覆盖写)
      *a: 以追加内容方式打开文件,指针移至最后,若文件不存在,则尝试创建。
      a+: 以追加内容和可读方式打开文件,指针移至最后,若文件不存在,则尝试创建。
      x: 以创建方式打开文件,可写。若文件已存在,则报错。
      x+: 以创建方式打开文件,可写可读。若文件已存在,则报错。
    附加模式:
      t: txt文本模式(字符流)
      b: byte字节模式(二进制)默认 (字节流)
      如:fopen("a.txt","rb");

      文件的读写操作也叫流操作,其中流分为字符流(t)和字节流(b 二进制)

    *2. fread(打开的文件资源,读取的长度) -- 读取文件内容。

    *3. fwrite(打开的文件资源,被写入的字串[,长度]) -- 向文件写入内容。

    *4. fclose(打开的文件资源) -- 关闭文件

    5. fgets() -- 从文件资源中读取一行

    6. fgetc() -- 读取一个字符
    //不用fopen就可以直接对文件进行操作
    *7. file() 将文件读出(内容是数组格式),并返回
    *8. readfile() 将文件内容读出,并输出
    9. file_get_contents() 读取文件内容
    10.file_put_contents() 将指定内容写入文件
    //文件指针操作
    11. ftell() --返回文件指针的位置
    12. fseek() --设置文件指针的位置
    示例:
      fseek($f,-2,SEEK_CUR); //从当前指针位置开始,向前移动2位
      fseek($f,2,SEEK_SET); //从文件指针开始位置,向后移动2位
      fseek($f,-5,SEEK_END); //从文件指针的最后位置开始,向前移动5位
    13. rewind() --将文件指针移至首位
    14.文件锁flock()
      bool flock(int handle, int operation [, int &wouldblock])
      第一个参数必须的,是一个已经打开的资源文件
      第二个参数必须的,规定锁的类型:
        LOCK_SH:取得共享锁(从文件中读取数据时使用)
        LOCK_EX:取得独占锁(向文件中写入数据时使用)
        LOCK_UN:释放锁定
        LOCK_NB:附加锁定


以上是关于文件系统处理的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

Java itext为pdf 文件添加水印核心功能代码片段

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

常用python日期日志获取内容循环的代码片段

处理屏幕旋转上的片段重复(带有示例代码)

在 Python 多处理进程中运行较慢的 OpenCV 代码片段