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

作者: 学长冷月 分类: PHP 发布时间: 2020-05-05 点击量: 89

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

回顾真题

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

答案:

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

考点分析

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

文件相关

打开函数:
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函数的方式对目录进行遍历,写出程序

答案:

  1. <?php
  2. /**
  3. * Created by 冷月小白.
  4. * 微信公众号: 学长冷月
  5. */
  6. //1.打开目录
  7. //2.读取目录当中的文件
  8. //3.如果文件类型是目录,继续打开目录
  9. //4.读取子目录文件
  10. //5.如果文件类型是文件,输出文件名称
  11. function loopdir($dir)
  12. {
  13. $handle = opendir($dir);
  14. while (($file = readdir($handle)) !== false)
  15. {
  16. if ($file != '.' && $file != '..')
  17. {
  18. echo $file . '<br />';
  19. if (filetype($dir . '/' . $file) == 'dir')
  20. {
  21. loopdir($dir . '/' . $file);
  22. }
  23. }
  24. }
  25. closedir($handle);
  26. }
  27. loopdir('./');

如果觉得我的文章对您有用,可以关注冷月的公众号或者加冷月的微信。获得独家整理的学习资源和日常干货推送!

学长冷月的公众号

学长冷月的公众号

学长冷月的微信

学长冷月的微信
php,面试,文件及目录处理
0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注