• php面试笔记(7)-php基础知识-文件及目录处理考点


    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com

    在面试中,考官往往喜欢基础扎实的面试者,而文件及目录处理相关的考点,往往是大家容易忽视的一个点,今天冷月就来帮各位小伙伴们梳理一下,在面试中文件及目录处理相关的注意点。

    回顾真题

    不断在文件hello.txt头部写入一行"Hello world"字符串,要求代码完整

    答案:

    <?php
    /**
     * Created by 冷月小白.
     * 微信公众号: 学长冷月
     */
    
    $file = './hello.txt';
    $handle = fopen($file,'r'); //以只读的方式打开文件,指针指向文件开头
    $content = fread($handle,filesize($file)); //将文件全部读出
    var_dump($content);
    $content = "Hello World
    " . $content;  //拼接字符串
    fclose($handle); //关闭文件
    
    $handle = fopen($file,'w'); //以只写的方式打开文件,指针指向文件开头
    fwrite($handle,$content); //写入
    fclose($handle);//关闭文件
    ?>
    

    考点分析

    文件的读取/写入操作,以及延伸出的目录操作函数,其他文件的操作。

    文件相关

    打开函数:

    fopen()函数

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

    "r" (只读方式打开,将文件指针指向文件头)

    "r+" (读写方式打开,将文件指针指向文件头)

    "w" (写入方式打开,清除文件内容,如果文件不存在则尝试创建之)

    "w+" (读写方式打开,清除文件内容,如果文件不存在则尝试创建之)

    "a" (写入方式打开,将文件指针指向文件末尾进行写入,如果文件不存在则尝试创建之)

    "a+" (读写方式打开,通过将文件指针指向文件末尾进行写入来保存文件内容)

    "x" (创建一个新的文件并以写入方式打开,如果文件已存在则返回 FALSE 和一个错误)

    "x+" (创建一个新的文件并以读写方式打开,如果文件已存在则返回 FALSE 和一个错误)

    "b" (以二进制的方式打开)

    写入函数:

    fwrite(file,string,length)

    file:指定写入的文件

    string:指定写入的内容

    length:指定写入的最大字节数(可选)

    fputs(file,string,length)

    fputs() 函数是 fwrite() 函数的别名。

    读取函数:

    string fread ( resource $handle , int $length )

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

    length:规定要读取的最大字节数。

    fgets(file,length)

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

    file:必需。规定要读取的文件。

    length:可选。规定要读取的字节数。默认是 1024 字节。

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

    关闭函数:

    fclose(file)

    fclose() 函数关闭一个打开文件。

    不需要fopen()打开的函数:

    file_get_contents(path)

    file_get_contents() 把整个文件读入一个字符串中。

    file_put_contents ( string $filename , mixed $data)

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

    其他:

    file(path)

    file() 函数把整个文件读入一个数组中。

    数组中的每个元素都是文件中相应的一行,包括换行符在内。

    readfile()

    readfile() 函数读取一个文件,并写入到输出缓冲。

    如果成功,该函数返回从文件中读入的字节数。如果失败,该函数返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 '@' 来隐藏错误输出。

    访问远程文件:

    在PHP.ini中将allow_url_fopen设置为On。HTTP协议连接只能使用只读,FTP协议可以使用只读、只写。

    目录相关

    名称相关:

    basename(path)

    basename() 函数返回路径中的文件名部分。

    dirname(path)

    dirname() 函数返回路径中的目录部分。

    pathinfo(path)

    pathinfo() 函数以数组的形式返回文件路径的信息。

    目录读取:

    opendir(path):

    opendir() 函数打开目录句柄。

    readdir(dir_handle):

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

    closedir(dir_handle):

    closedir() 函数关闭目录句柄。

    rewinddir(dir_handle);

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

    目录删除

    rmdir(dir)

    rmdir() 函数删除空的目录。

    目录创建

    mkdir(path)

    mkdir() 函数创建目录。

    文件大小

    filesize(filename)

    filesize() 函数返回指定文件的大小(字节数)。

    目录大小

    disk_free_space(directory)

    disk_free_space() 函数返回目录中的可用空间

    disk_total_space(directory)

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

    文件拷贝

    copy(file,to_file)

    copy() 函数复制文件。

    file:必需。规定要复制的文件。

    to_file:必需。规定复制文件的目的地。

    删除文件:

    unlink(filename)

    unlink() 函数删除文件。

    文件类型

    filetype(filename)

    filetype() 函数返回指定文件或目录的类型。

    重命名文件或目录

    rename(oldname,newname)

    rename() 函数重命名文件或目录。

    文件截取

    ftruncate(file,size)

    ftruncate() 函数把文件截断到指定的长度。

    文件属性

    file_exists(path)

    file_exists() 函数检查文件或目录是否存在。

    is_readable(file)

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

    is_writable(file)

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

    is_executable(file)

    is_executable() 函数检查指定的文件是否可执行。

    fileatime(filename)

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

    fileatime(filename)

    fileatime() 函数返回指定文件的上次访问时间。

    filemtime(filename)

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

    文件锁

    flock(file,lock)

    flock() 函数锁定或释放文件。

    要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH

    要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX

    要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN

    如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB

    文件指针

    ftell(file)

    ftell() 函数在打开文件中的当前位置。返回文件指针的当前位置。

    fseek(file,offset)

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

    该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。

    rewind(file)

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

    一网打尽

    通过PHP函数的方式对目录进行遍历,写出程序

    答案:

    <?php
    /**
     * Created by 冷月小白.
     * 微信公众号: 学长冷月
     */
    
    //1.打开目录
    //2.读取目录当中的文件
    //3.如果文件类型是目录,继续打开目录
    //4.读取子目录文件
    //5.如果文件类型是文件,输出文件名称
    
    function loopdir($dir)
    {
        $handle = opendir($dir);
        while (($file = readdir($handle)) !== false)
        {
            if ($file != '.' && $file != '..')
            {
                echo $file . '<br />';
                if (filetype($dir . '/' . $file) == 'dir')
                {
                    loopdir($dir . '/' . $file);
                }
            }
        }
        closedir($handle);
    }
    loopdir('./');
    

    如果这篇博文有帮助到您,可以帮冷月点一个赞或者加一个关注哦!

    欢迎关注我的公众号:学长冷月,获得独家整理的学习资源和日常干货推送。
    如果您对我的专题内容感兴趣,也可以关注我的博客:guoyu7.com

  • 相关阅读:
    Maven常用仓库地址以及手动添加jar包到仓库
    将Jar安装到本地仓库和Jar上传到私服
    maven release插件将一版本发布到仓库中时Return code is: 401, ReasonPhrase:Unauthorized
    使用github作为maven仓库
    关闭 将jar或者aar发布到到mvn 中(用github作为仓库), 通过gradle dependency 方式集成
    使用Spring进行统一日志管理 + 统一异常管理
    Error pulling origin: error: The following untracked working tree files would be overwritten by...
    c语言函数---M
    C++面试题一大波
    kettle中调用java类
  • 原文地址:https://www.cnblogs.com/guoyugy/p/12377385.html
Copyright © 2020-2023  润新知