前两天面试的时候,笔试要求写一些文件操作类函数,什么遍历目录获取文件扩展名之类的,回来后大致总结了一下PHP中一些常见的文件操作函数分享一下。

1、使用递归删除目录及目录下所有文件的方法。

function delDir($dir){
@$dh=opendir($dir); //打开目录流
while(!!$file=@readdir($dh)){
if($file!='.' && $file!='..'){
$fullpath=$dir.'/'.$file;
if(!is_dir($fullpath)){ //如果是文件直接删除
unlink($fullpath);
}else{ //如果是目录 递归调用本身
delDir($fullpath);
}
}
}
@closedir($dh); //关闭目录流
if(@rmdir($dir)){ //删除目录本身
return true;
}else{
return false;
}
}

 2、写出一个能创建多级目录的PHP函数

function createdirlist($path,$mode){
if (is_dir($path)){
//判断目录存在否,存在不创建
echo "目录'" . $path . "'已经存在";
//已经存在则输入路径
}else{ //不存在则创建目录
$re=mkdir($path,$mode,true);
//第三个参数为true即可以创建多极目录
if ($re){
echo "目录创建成功";//目录创建成功
}else{
echo "目录创建失败";
}
}
}
$path="../a/x/cc/cd"; //要创建的目录
$mode=0755; //创建目录的模式,即权限.
createdirlist($path,$mode);//测试

3、写出一个函数统计某个目录下所有文件大小

function getDirSize($dirname){
$dirsize = 0;//初始化一个大小为0
$handle = opendir($dirname);//打开这个目录
//从目录句柄中循环读取条目,并按照系统中的顺序返回目录中下一个文件的文件名
while($fliename = readdir($handle)){//readdir函数用于从目录中读取条目
if($fliename != "." && $fliename != ".."){
$file = $dirname.'/'.$fliename;
//判断给定文件名是否是一个目录
if(is_dir($file)){
//如果是一个目录,则调用函数getDirSize()
$dirsize+=getDirSize($file);
}else{
//如果不是目录是一个文件,则取得其大小并且累加到变量$diesize
$dirsize+=filesize($file);//filesize获取文件大小
}
}
}
closedir($handle);//关闭目录句柄
return $dirsize;//返回累加的大小
}
$dirname = "E:/www";//指定要遍历的目录
echo $dirname."目录中文件的总大小为:".getDirSize($dirname)."B";

 

4、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

方法一:
function dir_recurse($dir) {
$i = 1;
if($handle = opendir($dir)) {//打开这个目录
while(false !== ($file = readdir($handle))) {//readdir函数用于从目录中读取条目
if($file != "." && $file != ".." ) {
if(is_dir($dir."/".$file) == true) {//判断是否是一个目录
$fullpath = $dir."/".$file;
dir_recurse($fullpath);
echo "$fullpath\n"."<br>";
$i++;
}else {
$fullpath = $dir."/".$file;
echo "$fullpath\n"."<br>";
$i++;
}
}
}
closedir($handle);
}
}
$dir = "E:/KuGou";
dir_recurse($dir);
方法二:
function my_scandir($dir)
{
$files=array();
if(is_dir($dir))//判断是否是目录
{
if($handle=opendir($dir))//打开目录句柄
{
while(($file=readdir($handle))!==false)//从目录句柄中读取条目
{
if($file!= "." && $file!="..")
{
if(is_dir($dir."/".$file))
{
$files[$file]=my_scandir($dir."/".$file);
}
else
{
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return $files;
}
}
}
$dir = "E:/KuGou";
echo "<pre>";
print_r(my_scandir($dir));

5、使用五种以上方式获取一个文件的扩展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数

第一种:
function get_ext1($file_name){
return strrchr($file_name, '.');
}
第二种:
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, '.'));
}
第三种:
function get_ext3($file_name){
$p=explode('.', $file_name);
return array_pop($p);
}
第四种:
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
第五种:
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));
}
第六种:
function get_text6($file_name){
return end(explode('.',$file_name));
}

一般面试常考的也就是这些了,欢迎补充。

PHP 面试时常考的文件操作函数的更多相关文章

  1. Delphi文件操作函数

    文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...

  2. PHP常用的文件操作函数集锦

    以下是个人总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来. 一 .解析路径: 1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件 ...

  3. C语言样式的文件操作函数

    使用C语言样式的文件操作函数,需要包含stdio.h头文件. 1.打开文件的函数: //oflag的取值为“w”或“r”,分别表示以写或读的方式打开 FILE* fd = fopen(filename ...

  4. Unix无缓冲文件操作函数、文件信息查询

    问题描述:         Unix无缓冲文件操作函数.文件信息查询 问题解决:        struct stat 结构体信息: 具体代码: 具体源文件:

  5. C语言文件操作函数

    C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...

  6. 总结文件操作函数-文件夹(三)-C语言

    获取.改变当前文件夹: 原型为: #include <unistd.h>   //头文件 char *getcwd(char *buf, size_t size); //获取当前文件夹.相 ...

  7. 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)

    参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...

  8. Linux C 文件操作函数(~上善止水~)

    翻翻笔记,整理一下 C 语言中的文件操作函数 ~~~~~~,多注意细节,maybe 细节决定成败~ 1. fopen /* fopen(打开文件) * * 相关函数 open,fclose * * 表 ...

  9. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

随机推荐

  1. cssTex

    var head= document.getElementById("head");head.style.cssText="width:200px;height:70px ...

  2. Chess----&gt;简单命令框象棋(人VS人)

    简单粗暴,直接先上代码: ChessBoard.h:  1 #ifndef CHESBOARD_H  2 #include<iostream>  3 #include<string& ...

  3. 笔记:Jersey REST 传输格式-XML

    XML类型是使用最广泛的数据类型,Jersey 对XML类型的数据处理,支持Java领域的两大标准,即JAXP(Java API for XML Processing,JSR-206)和JAXB(Ja ...

  4. Linux 终端下解压文件失败问题

    Linux 终端下解压文件失败: # tar -zxvf *****.tar.bz2 tar 命令出错gzip: stdin: not in gzip format tar: Child return ...

  5. java.lang.IllegalArgumentException: Attribute &#39;items&#39; is required and must be a Collection, an Array or a Map

    很有可能是涉及items的时候写成了item导致此错

  6. MANIPULATION

    MANIPULATION Generalizations Congratulations! You learned how to use the command line to view and ma ...

  7. 消除 transition 闪屏

    .css { -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden; -webkit-perspectiv ...

  8. SSIS 组件属性整理

    整理SSIS 组件的属性解释及其用法 一,ExecValueVariable属性 有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Tas ...

  9. 原创:如何实现在Excel通过循环语句设置指定行的格式

    原创:如何实现在Excel通过循环语句设置指定行的格式 一.需求: 想让excel的某些行(比如3的倍数的行)字体变成5号字 如何整: 二.实现: Sub code() To Range(" ...

  10. 五分钟看懂Celery定时任务

    Django下使用Celery 使用场景: 1, Web应用. 当用户触发的一个操作需要很长时间才能执行完成,那么就可以把它当做一个任务去交给Celery去异步执行, 执行完成之后再返回给用户,这短时 ...