本文是根据慕课网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\n" . $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

php面试笔记(7)-php基础知识-文件及目录处理考点的更多相关文章

  1. Linux基础命令-文件与目录

    Linux基础命令-文件与目录 参考:<鸟哥linux私房菜>五-七章,17/12/5复习,18/01/15复习 文件权限 rwx421:用户,用户组,其他 umask查看默认权限:000 ...

  2. php面试专题---7、文件及目录处理考点

    php面试专题---7.文件及目录处理考点 一.总结 一句话总结: 用脑子:基本文件操作和目录操作了解一波,不必强求 1.不断在文件hello.txt头部写入一行“Hello World”字符串,要求 ...

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

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...

  4. Java 面试知识点解析(一)——基础知识篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  5. 【Java面试】1、基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...

  6. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  7. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  8. [terry笔记]data guard基础知识

    如下介绍了data guard的基础知识,整理自网络: Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时 ...

  9. FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...

随机推荐

  1. iOS使用fastlane自动化打包到fir(最全最详细流程)

    # iOS使用fastlane自动化打包到fir(最全最详细流程)1. **首先确认是否安装了ruby,终端查看下ruby版本**> ruby -v终端输出:ruby 2.4.1p111 (20 ...

  2. git 工作中实用合并分支

    合并分支 .克隆远程分支 git clone -b dev1. url .创建本地分支,并关联远程分支 git checkout -b dev_wt orgin/dev_wt .合并某分支到当前分支 ...

  3. java 方法定义 调用

    一.定义 格式: 修饰符 返回值类型 方法名(参数){ return } 相比之下python方法的定义简单多了 public static 是修饰符 二.调用 方法名(); 注意:要在main方法中 ...

  4. python小知识点总结

    小知识点总结 1.python2和python3的区别   python2 python3 默认编码 ascii utf-8 input() raw_input() input() print 可以不 ...

  5. 「 从0到1学习微服务SpringCloud 」10 服务网关Zuul

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...

  6. Creating Custom Helper Methods 创建自定义辅助器方法----辅助器方法 ------ 精通ASP.NET MVC 5

    创建内联的辅助器方法 和 拓展方法 好像类似的功能. 不过写在前台更直观

  7. 文件上传三:base64编码上传

    介绍三种上传方式: 文件上传一:伪刷新上传 文件上传二:FormData上传 文件上传三:base64编码上传 Flash的方式也玩过,现在不推荐用了. 优点: 1.浏览器可以马上展示图像,不需要先上 ...

  8. 百度ai 接口调用

    1.百度智能云 2.右上角 管理控制台 3.左上角产品服务 选择应用 4.创建应用 5.应用详情下面的查看文档 6.选择pythonSDK  查看下面快速入门文档  和  接口说明文档. 7.按步骤写 ...

  9. apache和nginx那点事儿--阻塞和异步

    先明白的事儿:当一个程序在执行的时候,一般会创建一个进程,也可以有多个进程.一个进程至少会创建一个线程,多个线程共享一个程序进程的内存.程序的运行最终是靠线程来完成操作的.线程的数量跟CPU核数有关, ...

  10. PMP——项目管理的价值观与方法论

    关于项目管理的十个成语: 未雨绸缪(计划.风险):识别风险.做出计划.并指定负责人: 防微杜渐(监控.纠正):持续的实时的监控计划,监控和发现偏差,并进行纠正: 资源集成(整合.采购):把最专业的资源 ...