专栏首页冷月带你手撕代码php面试笔记(7)-php基础知识-文件及目录处理考点

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

知识提升仅需5min

php基础知识-文件及目录处理

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

01

回顾真题

不断在文件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\n" . $content; //拼接字符串 fclose($handle); //关闭文件 $handle = fopen($file,'w'); //以只写的方式打开文件,指针指向文件开头 fwrite($handle,$content); //写入 fclose($handle);//关闭文件 ?>

02

考点分析

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

02-1

文件相关

1

打开函数:fopen()函数用来打开一个文件,打开时需要指定打开模式"r" (只读方式打开,将文件指针指向文件头)"r+" (读写方式打开,将文件指针指向文件头)"w" (写入方式打开,清除文件内容,如果文件不存在则尝试创建之)"w+" (读写方式打开,清除文件内容,如果文件不存在则尝试创建之)"a" (写入方式打开,将文件指针指向文件末尾进行写入,如果文件不存在则尝试创建之)"a+" (读写方式打开,通过将文件指针指向文件末尾进行写入来保存文件内容)"x" (创建一个新的文件并以写入方式打开,如果文件已存在则返回 FALSE 和一个错误)"x+" (创建一个新的文件并以读写方式打开,如果文件已存在则返回 FALSE 和一个错误)"b" (以二进制的方式打开)

2

写入函数:fwrite(file,string,length)file:指定写入的文件string:指定写入的内容length:指定写入的最大字节数(可选)fputs(file,string,length)fputs() 函数是 fwrite() 函数的别名。

3

读取函数:string fread ( resource $handle , int $length )handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。length:规定要读取的最大字节数。fgets(file,length)fgets() 函数从文件指针中读取一行。file:必需。规定要读取的文件。length:可选。规定要读取的字节数。默认是 1024 字节。fgetc(file) fgetc() 函数从文件指针中读取一个字符。

4

关闭函数:fclose(file)fclose() 函数关闭一个打开文件。不需要fopen()打开的函数:file_get_contents(path)file_get_contents() 把整个文件读入一个字符串中。file_put_contents ( string $filename , mixed $data)file_put_contents() 函数把一个字符串写入文件中。

  1. fopen()函数
  2. 用来打开一个文件,打开时需要指定打开模式
  3. "r" (只读方式打开,将文件指针指向文件头)
  4. "r+" (读写方式打开,将文件指针指向文件头)
  5. "w" (写入方式打开,清除文件内容,如果文件不存在则尝试创建之)
  6. "w+" (读写方式打开,清除文件内容,如果文件不存在则尝试创建之)
  7. "a" (写入方式打开,将文件指针指向文件末尾进行写入,如果文件不存在则尝试创建之)
  8. "a+" (读写方式打开,通过将文件指针指向文件末尾进行写入来保存文件内容)
  9. "x" (创建一个新的文件并以写入方式打开,如果文件已存在则返回 FALSE 和一个错误)
  10. "x+" (创建一个新的文件并以读写方式打开,如果文件已存在则返回 FALSE 和一个错误)
  11. "b" (以二进制的方式打开)

2写入函数:

  1. fwrite(file,string,length)
  2. file:指定写入的文件
  3. string:指定写入的内容
  4. length:指定写入的最大字节数(可选)
  5. fputs(file,string,length)
  6. fputs() 函数是 fwrite() 函数的别名。

3读取函数:

  1. string fread ( resource $handle , int $length )
  2. handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。
  3. length:规定要读取的最大字节数。
  4. fgets(file,length)
  5. fgets() 函数从文件指针中读取一行。
  6. file:必需。规定要读取的文件。
  7. length:可选。规定要读取的字节数。默认是 1024 字节。
  8. fgetc(file) fgetc() 函数从文件指针中读取一个字符。

4关闭函数:

  1. fclose(file)
  2. fclose() 函数关闭一个打开文件。
  3. 不需要fopen()打开的函数:
  4. file_get_contents(path)
  5. file_get_contents() 把整个文件读入一个字符串中。
  6. file_put_contents ( string $filename , mixed $data)
  7. file_put_contents() 函数把一个字符串写入文件中。

5

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

6

其他:file(path)file() 函数把整个文件读入一个数组中。数组中的每个元素都是文件中相应的一行,包括换行符在内。readfile()readfile() 函数读取一个文件,并写入到输出缓冲。如果成功,该函数返回从文件中读入的字节数。如果失败,该函数返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 '@' 来隐藏错误输出。

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

6其他:

  1. file(path)
  2. file() 函数把整个文件读入一个数组中。
  3. 数组中的每个元素都是文件中相应的一行,包括换行符在内。
  4. readfile()
  5. readfile() 函数读取一个文件,并写入到输出缓冲。
  6. 如果成功,该函数返回从文件中读入的字节数。如果失败,该函数返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 '@' 来隐藏错误输出。

02-2

目录相关

1

名称相关:basename(path)basename() 函数返回路径中的文件名部分。dirname(path)dirname() 函数返回路径中的目录部分。pathinfo(path)pathinfo() 函数以数组的形式返回文件路径的信息。

2

目录读取:opendir(path):opendir() 函数打开目录句柄。readdir(dir_handle):readdir() 函数返回目录中下一个文件的文件名。closedir(dir_handle):closedir() 函数关闭目录句柄。rewinddir(dir_handle);rewinddir() 函数重置由 opendir() 创建的目录句柄。

3

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

4

目录创建mkdir(path)mkdir() 函数创建目录。文件大小filesize(filename)filesize() 函数返回指定文件的大小(字节数)。

  1. basename(path)
  2. basename() 函数返回路径中的文件名部分。
  3. dirname(path)
  4. dirname() 函数返回路径中的目录部分。
  5. pathinfo(path)
  6. pathinfo() 函数以数组的形式返回文件路径的信息。

2目录读取:

  1. opendir(path):
  2. opendir() 函数打开目录句柄。
  3. readdir(dir_handle):
  4. readdir() 函数返回目录中下一个文件的文件名。
  5. closedir(dir_handle):
  6. closedir() 函数关闭目录句柄。
  7. rewinddir(dir_handle);
  8. rewinddir() 函数重置由 opendir() 创建的目录句柄。

3目录删除

  1. rmdir(dir)
  2. rmdir() 函数删除空的目录。

4目录创建

  1. mkdir(path)
  2. mkdir() 函数创建目录。
  3. 文件大小
  4. filesize(filename)
  5. filesize() 函数返回指定文件的大小(字节数)。

5

目录大小disk_free_space(directory)disk_free_space() 函数返回目录中的可用空间disk_total_space(directory)disk_total_space() 函数返回指定目录的磁盘总大小。

6

文件拷贝copy(file,to_file)copy() 函数复制文件。file:必需。规定要复制的文件。to_file:必需。规定复制文件的目的地。

7

删除文件:unlink(filename)unlink() 函数删除文件。

8

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

  1. disk_free_space(directory)
  2. disk_free_space() 函数返回目录中的可用空间
  3. disk_total_space(directory)
  4. disk_total_space() 函数返回指定目录的磁盘总大小。

6文件拷贝

  1. copy(file,to_file)
  2. copy() 函数复制文件。
  3. file:必需。规定要复制的文件。
  4. to_file:必需。规定复制文件的目的地。

7删除文件:

  1. unlink(filename)
  2. unlink() 函数删除文件。

8文件类型

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

9

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

10

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

11

文件属性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() 函数返回文件内容的上次修改时间。

12

文件锁flock(file,lock)flock() 函数锁定或释放文件。要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB

  1. rename(oldname,newname)
  2. rename() 函数重命名文件或目录。

10文件截取

  1. ftruncate(file,size)
  2. ftruncate() 函数把文件截断到指定的长度。

11文件属性

  1. file_exists(path)
  2. file_exists() 函数检查文件或目录是否存在。
  3. is_readable(file)
  4. is_readable() 函数判断指定文件名是否可读。
  5. is_writable(file)
  6. is_writable() 函数判断指定的文件是否可写。
  7. is_executable(file)
  8. is_executable() 函数检查指定的文件是否可执行。
  9. fileatime(filename)
  10. filectime() 函数返回指定文件的上次 inode 修改时间。
  11. fileatime(filename)
  12. fileatime() 函数返回指定文件的上次访问时间。
  13. filemtime(filename)
  14. filemtime() 函数返回文件内容的上次修改时间。

12文件锁

  1. flock(file,lock)
  2. flock() 函数锁定或释放文件。
  3. 要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH
  4. 要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX
  5. 要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN
  6. 如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB

13

文件指针ftell(file)ftell() 函数在打开文件中的当前位置。返回文件指针的当前位置。fseek(file,offset)fseek() 函数在打开的文件中定位。该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。rewind(file)rewind() 函数将文件指针的位置倒回文件的开头。

  1. ftell(file)
  2. ftell() 函数在打开文件中的当前位置。返回文件指针的当前位置。
  3. fseek(file,offset)
  4. fseek() 函数在打开的文件中定位。
  5. 该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。
  6. rewind(file)
  7. rewind() 函数将文件指针的位置倒回文件的开头。

03

一网打尽

在学习了本博文之后,冷月来测试一下大家对于知识的掌握程度。请看下面这道题:

通过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('./');

本文分享自微信公众号 - 学长冷月(v8688886),作者:冷月小白

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • php面试笔记(5)-php基础知识-自定义函数及内部函数考点

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

    学长冷月
  • php面试笔记(6)-php基础知识-正则表达式考点

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

    学长冷月
  • 学长冷月带你怒刷LeetCode之反转链表

    链表的操作是数据结构中最基础的算法之一,反转列表也是一道经典的笔试题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明...

    学长冷月
  • [二十五]JavaIO之RandomAccessFile

    noteless
  • Python全栈开发之文件操作

    在终端/资源管理器、 中可以执行常规的文件/目录管理操作 ,如果希望通过代码来实现,需要导入os模块

    py3study
  • 多基因风险评分3

    PRSice是当前比较流行的多基因风险评分工具,它主要是用R语言编写的,运行速度快,可以高通量处理大数据。它既有Linux版本,也有Windows版本,由于我们...

    生信与临床
  • dz2.5 后台空白 登陆等到处提示内部错误,无法显示此内容

    源出于对一个垃圾站的搬家,直接搬了文件和数据库,结果出现标题的错误,经过几天的百度等。

    用户1191760
  • Roslyn 通过 Target 修改编译的文件

    本文也是带着一个任务来开始。任务就是本渣是一个腹黑的开发者,想要在开发的过程替换一个文件,让开发者在编译出来的文件和他调用的文件是两个不同的文件。

    林德熙
  • 聊聊安全测试中如何快速搞定Webshell

    WEB安全漏洞中,与文件操作相关的漏洞类型就不少,在大部分的渗透测试过程中,上传文件(大、小马)是必不可少的一个流程,然而各种各样的防火墙拦截了文件上传,遂整理...

    周俊辉
  • PHP零基础入门

    ucfirst函数,将句子首字母转换为大写,ucwords函数将每个单词的首字母转换为大写。

    达达前端

扫码关注云+社区

领取腾讯云代金券