PHP面试 PHP基础知识 七(文件及目录处理)

文件操作

  文件打开函数 
    fopen()函数
    //用来打开一个文件   打开时需要指定打开模式

    语法:fopen( filename, mode, include_path, context);
     filename   必须    要打开的文件或URL
     mode       必须    该文件/流的访问类型。
     include_path  可选  需要在include_path中检索文件,可以设为1或true
     context    可选    文件句柄的环境  可以修改流的行为选择
    
    mode 参数
        r  只读方式打开  文件指针指向文件头
        r+  读写方式打开  文件指针指向文件头
        w 写方式打开 文件指针指向文件头 将文件内容清空 不存在创建新文件
        w+ 读写方式打开文件指针指向文件头  将文件内容清空  不存在创建新文件
        a   写入方式打开  文件指针指向文件末尾 不存在创建新文件
        a+ 读写方式打开 文件指针指向末尾  不存在创建新文件
        x   创建并以写入方式打开,将文件指针指向文件头。如果文件已经存在fopen()调用失败返回false
        x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已经存在fopen()调用失败返回false
  文件写入函数
fwrite()   写入文件函数

语法:fwrite(file,string,lenght);

file  要写入的打开文件
string   要写入打开文件的字符串
length  设置要写入文件的最大字节数

fputs()  fwrite的别名

语法:fputs(file,string,length);

参数描述与fwrite相同
  文件读取函数
fread()  读取函数

语法:fread(file,length);

file  读取打开的文件

length   读取的最大字节数



fgets()  读取函数   从文件指针中读取一行

语法:fgets(file,length);

file   要读取的文件

length  要读取的字节数  默认是1024字节



fgetc()  读取函数   从文件指针中读取一个字符

语法:fgetc(file)

file    要读取的文件
注意:该函数可能返回布尔值 false,但也可能返回一个与 false 等值的非布尔值,例如 0 或者 ""。
  文件关闭函数
fclose()  文件关闭函数

语法:fclose(file);

file   关闭的文件
    不需要fopen打开文件的函数
file_get_contents()  把整个文件读入一个字符串中

此函数可安全用于二进制对象

语法:file_get_contents(path,include_ptah,context,start,max_length)

参数
    path 必须 要读取的文件
    以下参数可选
    include_path 想在include_path中搜寻文件  可以设置为1
    context 可以修改流的行为选项,使用null,则忽略   PHP5.0添加
    start  文件开始读取的位置     PHP5.1新加参数
    max_length 设置读取的字节数    PHP5.1新加参数



file_put_contents()   把一个字符串写入文件中

语法:file_put_contents(file,data,mode,context)

参数
file 必须  要写入的数据的文件  不存在创建新文件
data  可选  写入文件的数据   可以是字符串 数组  或数据流
mode 可选  如何打开写入文件  可能的值  FILE_USE_INCLUDE_PATH
                                                FILE_APPEND
                                                LOCK_EX
context 可选  可以修改流的行为选项  若使用null   则忽略
  其他读取函数
file()   把整个文件读入一个数组中

语法:file(path,include_path,context);

参数
    path   必须    要读取的文件
    include_path  可选  想要在include_path 中搜寻文件  该参数设为1
    context  可选  可以修改流的行为选项 使用null  则忽略



readfile()   输出一个文件

语法:readfile(filename,include_path,context);

参数
    filename  必须  要读取的文件
    include_path 可选  想要在include_path 中搜寻文件  该参数设为true
    context  可选  可以修改流的行为选项
  访问远程文件

    需要在php.ini配置文件中开启 allow_url_fopen,HTTP协议连接只能使用只读,FTP协议可以使用只读或只写

 

目录操作

  名称相关函数
basename()  返回路径中的文件名

语法:basename(path,suffix);
参数
    path  文件路径
    suffix  文件名后缀   返回结果不带后缀名
    
    $path = "d:/test/text.txt";
    
    echo basename($path);  //输出结果text.txt
    
    echo basename($path,'.txt');  //输出结果 text


dirname()     返回路径中目录部分

语法:dirname(path);
参数
    path  文件路径
    
    $path = 'd:/test/test.txt';

    echo dirname($path);    //输出 d:/test
  目录读取
opendir()  打开目录

语法:opendir(path,context);
参数
    path    必需  要打开的目录路径
    
    context   可以修改目录流的行为


readdir()    返回目录中下一个文件的文件名

语法:readdir(dir_handle);
参数
     dir_handle   由opendir()打开的目录句柄资源


closedir()      关闭目录

语法:closedir(dir_handle);
参数
     dir_handle   由opendir()打开的目录句柄资源



rewinddir()     重置由opendir()创建的目录句柄

语法:rewwinddir(dir_handle);
参数
     dir_handle   由opendir()打开的目录句柄资源


实例
     $dir = "./images/";  

     // 打开目录,然后读取其内容
 if (is_dir($dir)){

         if ($dh = opendir($dir)){

                  // 列出 images 目录中的文件
             while (($file = readdir($dh)) !== false){
                  echo "filename:" . $file . "<br>";
              }
             rewinddir();
            // 再次列出 images 目录中的文件
             while (($file = readdir($dh)) !== false){
                  echo "filename:" . $file . "<br>";
            }
            closedir($dh);
     }
}
  目录删除
rmdir()   删除空的目录

语法:rmdir(path,context);
参数
    path   必需   要删除的目录
    context   可以修改流的行为的选项
  创建目录
mkdir()   创建目录

创建成功返回true  失败返回false
语法:mkdir(path,mode,recursive,context);
参数
    path    要创建的目录
    mode  目录权限    默认  0777
    recursive   是否设置递归模式
    context   可以修改流的行为的选项
  文件大小 
filesize()   返回指定文件的大小

成功返回文件大小的字节数   失败返回false

语法:filesize(filename);

参数
filename  要检查的文件

echo  filesize('text.txt');

输出 :文件字节数  20
  目录大小
disk_free_space()    返回目录中可用的空间

语法:disk_free_space(disrectory);

参数
     disrectory   要检查的目录

    echo disk_free_space("C:");

输出:可用的字节数    209693288558


disk_total_space()   返回指定目录磁盘的总大小

语法:disk_total_space(directory)

参数
     disrectory   要检查的目录

     echo disk_total_space("C:");
     
     输出:返回空间总字节数    509693888668
  文件拷贝
copy()    复制文件

语法:copy(source,destination)
参数
     source     要复制的文件
     destination   复制文件的目的地

    echo copy("a.txt","b.txt");

    输出:echo   true显示1   成功返回true  失败返回false
  删除文件
unlink()    删除文件

若成功,则返回 true,失败则返回 false。

语法:unlink(filename,context)
参数
     filename   要删除的文件。
     context    可修改流的行为的一套选项

     $res = unlink("test.txt");

     var_dump($res);

     输出:true   
  文件类型 
filetype()   返回文件类型

成功  返回 7 种可能的值fifo
    char
    dir
    block
    link
    file
    unknown   
失败  返回false

语法:filetype(filename)
参数
    要检查的文件

    echo filetype("test.txt");
    
    输出:file    
  重命名文件或者目录
rename()   重命名文件或目录

若成功,则该函数返回 true。若失败,则返回 false

语法:rename(oldname,newname,context)

参数
     oldname    要重命名的文件或目录
     newname   文件或目录的新名称
     context     可修改流的行为的一套选项
  文件截取
ftruncate()     把文件截断到指定的长度

成功则返回 TRUE,否则返回 FALSE

语法:ftruncate(file,size)
参数
    file   要截断的打开文件
    size  新的文件大小


    //检查文件大小
    echo filesize("test.txt");

    $file = fopen("test.txt", "a+");  打开文件
    ftruncate($file,100);  //截取文件
    fclose($file);  //关闭文件

    //清空缓存,再次检查文件大小
    clearstatcache();
    echo filesize("test.txt");
  文件属性
file_exists()     检查文件或目录是否存在

文件或目录存在则返回 true,否则返回 false

语法:file_exists(path)
参数
    path  要检查的路径




is_readable()    判断指定文件名是否可读

定的文件或目录存在并且可读,则返回 TRUE。

语法:is_readable(file)
参数 
     file   要检查的文件



is_writable()    判断指定的文件是否可写

文件存在并且可写则返回 true

语法:is_writable(file)
参数
     file   要检查的文件



is_executable()  文件是否可执行

如果文件存在且可执行,则返回 true。

语法:is_executable(file)
参数
     file   要检查的文件



filectime()   返回指定文件inode上次修改时间

语法:fileatime(file)
参数
     file   要检查的文件



fileatime()     文件的上次访问时间

语法:fileatime(file);
参数
     file   要检查的文件


filemtime()    返回文件内容上次的修改时间

语法:filemtime(file);
参数
     file   要检查的文件
  文件锁
flock()  锁定或释放文件

若成功,则返回 true。若失败,则返回 false。

语法:flock(file,lock,block)
参数
    file   要锁定或释放的已打开的文件
    lock  使用哪种锁定类型
    block      设置为 1 或 true,则当进行锁定时阻挡其他进程

lock 参数可以是以下值之一:

要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。
  文件指针
ftell()      在打开文件中的当前位置

该函数返回文件指针的当前位置。若失败,则返回 false。
语法:ftell(file)
参数
    file    要检查的已打开文件

fseek()    在打开的文件中定位

$file = fopen("test.txt","r");

    // 输出当前位置
    echo ftell($file);

    // 改变当前位置
    fseek($file,"15");

    // 再次输出当前位置
    echo ftell($file);

    fclose($file);

输出: 0  15

rewind()   将文件指针的位置倒回文件的开头

若成功,则返回 true。若失败,则返回 false。

语法:rewind(file)

参数
    file   已打开的文件

    $file = fopen("test.txt","r");

    //改变文件指针的位置
    fseek($file,"15");

    //把文件指针设定为 0
    rewind($file);

    fclose($file);
原文地址:https://www.cnblogs.com/dcrq/p/11051768.html