zoukankan      html  css  js  c++  java
  • 文件及目录处理相关考点

    文件读取/写入操作

    fopen — 打开文件或者 URL

    fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) : resource

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

    写入函数

    fwrite — 写入文件(可安全用于二进制文件)

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

    参数:

    handle

    文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

    string

    The string that is to be written.

    length

    如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。

    注意如果给出了 length 参数,则 magic_quotes_runtime 配置选项将被忽略,而 string 中的斜线将不会被抽去。

    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 中换行可以用 PHP_EOL 来替代,以提高代码的源代码级可移植性
       echo "1&nbsp&nbsp&nbsp&nbsp".basename("index.html")."<br>";
        echo "2&nbsp&nbsp&nbsp&nbsp".basename("index.html",'html')."<br>";
        echo "3&nbsp&nbsp&nbsp&nbsp".basename("index.html",'.html')."<br>";
        echo "4&nbsp&nbsp&nbsp&nbsp".basename(".",'')."<br>";
        echo "5&nbsp&nbsp&nbsp&nbsp".basename("index.html",'.')."<br>";
        echo "6&nbsp&nbsp&nbsp&nbsp".basename("/",'html')."<br>";
        echo "7&nbsp&nbsp&nbsp&nbsp".basename("\",'html')."<br>";

    输出:

    1    index.html
    2    index.
    3    index
    4    .
    5    index.html
    6    
    7    
    • dirname() : 返回路径中的目录部分

    string dirname ( string $path )

    返回 path 的父目录。 如果在 path 中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把 path 中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。

    <?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('.');
    杂念太多,必然根基浅薄
  • 相关阅读:
    Selenium IDE
    selenium简介
    Java程序要操作数据库,一定要使用JDBC技术吗?
    JDBC几个接口分区叫什么?它们分别有什么用?
    JDBC的全称是什么?
    什么时候使用session?什么时候使用application?
    内置对象session和application的作用是什么?
    修改表单中为什么要使用隐藏域?
    如何创建一个不能修改的属性?
    如何修改属性?
  • 原文地址:https://www.cnblogs.com/starshine-zhp/p/12842660.html
Copyright © 2011-2022 走看看