zoukankan      html  css  js  c++  java
  • PHP文件及目录考察点

    文件读取/写入操作

    fopen()函数

    用来打开一个文件,打开时需要指定打开模式

    打开模式

    模式 作用
    'r' 只读方式打开,将文件指针指向文件头。
    'r+' 读写方式打开,将文件指针指向文件头。
    'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL
    'x+' 创建并以读写方式打开,其他的行为和 'x' 一样。

    写入函数

    • fwrite()

    int fwrite ( resource $handle , string $string [, int $length ] )

    • fputs() : fwrite的别名

    读取函数

    • fread() : 读取文件(可安全用于二进制文件)

    string fread ( resource $handle , int $length )

    • fgets() : 从文件指针中读取一行

    string fgets ( resource $handle [, int $length ] )

    • fgetc() : 从文件指针中读取一个字符

    string fgetc ( resource $handle )

    关闭文件函数

    • fclose()

    不需要fopen()打开的函数

    • file_get_contents() : 将整个文件读入一个字符串

    string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

    • file_put_contents() : 将一个字符串写入文件 , 和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

    int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

    其他读取函数

    • file() : 把整个文件读入一个数组中

    array file ( string $filename [, int $flags = 0 [, resource $context ]] )

    • readfile() : 读取文件并写入到输出缓冲。

    int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

    访问远程文件

    开启allow_url_fopen,HTTP协议连接只能使用只读,FTP协议可以使用只读或者只写

    目录操作函数

    名称相关

    • basename() : 返回路径中的文件名部分

    string basename ( string $path [, string $suffix ] )

    <?php
    echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
    echo "2) ".basename("/etc/passwd").PHP_EOL;
    echo "3) ".basename("/etc/").PHP_EOL;
    echo "4) ".basename(".").PHP_EOL;
    echo "5) ".basename("/");
    ?>
    

    输出:

    1) sudoers
    2) passwd
    3) etc
    4) .
    5) 
    
    • dirname() : 返回路径中的目录部分

    string dirname ( string $path )

    <?php
    echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
    echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or  on Windows)
    echo "3) " . dirname("."); // 3) .
    ?>
    
    • pathinfo() : 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

    mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

    <?php
    $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
    
    echo $path_parts['dirname'], "
    ";
    echo $path_parts['basename'], "
    ";
    echo $path_parts['extension'], "
    ";
    echo $path_parts['filename'], "
    "; // since PHP 5.2.0
    ?>
    

    输出

    /www/htdocs/inc
    lib.inc.php
    php
    lib.inc
    

    目录读取

    • opendir() : 打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。

    resource opendir ( string $path [, resource $context ] )

    • readdir() : 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

    string readdir ([ resource $dir_handle ] )

    • closedir()
    • rewinddir() : 将 dir_handle 指定的目录流重置到目录的开头。

    void rewinddir ( resource $dir_handle )

    目录删除

    • rmdir() : 尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。

    bool rmdir ( string $dirname [, resource $context ] )

    目录创建

    • mkdir() : 尝试新建一个由 pathname 指定的目录。

    bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

    文件大小

    • filesize()

    目录大小

    • disk_free_space()
    • disk_total_space()

    文件拷贝

    • copy()

    bool copy ( string $source , string $dest [, resource $context ] )

    删除文件

    • unlink() : 删除 filename。和 Unix C 的 unlink() 函数相似。 发生错误时会产生一个 E_WARNING 级别的错误。

    bool unlink ( string $filename [, resource $context ] )

    文件类型

    • filetype() : 返回文件的类型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。

    重命名文件或目录

    • rename()

    bool rename ( string $oldname , string $newname [, resource $context ] )

    文件截取

    • ftruncate()

    bool ftruncate ( resource $handle , int $size )

    文件属性

    • file_exists()
    • is_readable()
    • is_writeable()
    • is_executable()
    • filectime() : 取得文件的 inode 修改时间。 (状态改变时间change time)
    • fileatime() : 取得文件的上次访问时间(access time)
    • filemtime() : 取得文件修改时间(modify time)

    文件锁

    • flock()

    文件指针

    • ftell() : 返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量。

    int ftell ( resource $handle )

    • fseek() : 在文件指针中定位

    int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )

    <?php
    
    $fp = fopen('somefile.txt', 'r');
    
    // 读取数据 
    $data = fgets($fp, 4096);
    
    // 将指针移动到文件开头
    // 与rewind($fp);效果一样
    fseek($fp, 0);
    
    ?>  
    
    • rewind() : 将 handle 的文件位置指针设为文件流的开头。

    示例

    <?php
    /**
     * 遍历目录里面的文件
     * 1 打开dir
     * 2 排除掉. 和 ..的情况
     * 3 如果是dir 则再对目录进行遍历,递归遍历
     */
    function loopDir($dir)
    {
        $handle = opendir($dir);
        while(false!==($file=readdir($handle))){//这里不能写成while($file=read($handle)),因为如果文件名为"0",也会被判断为false
            if ($file == '.' || $file == '..') {
                continue;
            }
            if (filetype($dir.'/'.$file)=='dir') {
                loopDir($dir.'/'.$file);
            } else {
                p($dir.'/'.$file);
            }
        }
        closedir($handle);
    }
    
    loopDir('.');
    
  • 相关阅读:
    mysql 查看数据库及表大小以及数据库扩容评估
    idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
    mybatis plus 中增删改查及Wrapper的使用
    mybatis plus 主键策略
    搭建 spring boot + mybatis plus 项目框架并进行调试
    jeecg datagrid重新指定数据源
    java 日志脱敏框架 sensitive-新版本0.0.2-深度拷贝,属性为对象和集合的
    java 实现敏感词(sensitive word)工具详解使用说明
    java 日志脱敏框架 sensitive,优雅的打印脱敏日志
    互联网公司OpenAPI链接
  • 原文地址:https://www.cnblogs.com/clannadxr/p/7716029.html
Copyright © 2011-2022 走看看