PHP 面试时常考的文件操作函数
前两天面试的时候,笔试要求写一些文件操作类函数,什么遍历目录获取文件扩展名之类的,回来后大致总结了一下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 面试时常考的文件操作函数的更多相关文章
- Delphi文件操作函数
文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...
- PHP常用的文件操作函数集锦
以下是个人总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来. 一 .解析路径: 1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件 ...
- C语言样式的文件操作函数
使用C语言样式的文件操作函数,需要包含stdio.h头文件. 1.打开文件的函数: //oflag的取值为“w”或“r”,分别表示以写或读的方式打开 FILE* fd = fopen(filename ...
- Unix无缓冲文件操作函数、文件信息查询
问题描述: Unix无缓冲文件操作函数.文件信息查询 问题解决: struct stat 结构体信息: 具体代码: 具体源文件:
- C语言文件操作函数
C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...
- 总结文件操作函数-文件夹(三)-C语言
获取.改变当前文件夹: 原型为: #include <unistd.h> //头文件 char *getcwd(char *buf, size_t size); //获取当前文件夹.相 ...
- 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)
参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...
- Linux C 文件操作函数(~上善止水~)
翻翻笔记,整理一下 C 语言中的文件操作函数 ~~~~~~,多注意细节,maybe 细节决定成败~ 1. fopen /* fopen(打开文件) * * 相关函数 open,fclose * * 表 ...
- 文件操作(FILE)与常用文件操作函数
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
随机推荐
- php导出csv报表
最近系统有一个导出报表功能,之前是导出的.xsl报表,但是当导出数据达到十万条时,导出经常出现超时与导出数据不全的情况,原因是导出.xsl报表会进行HTML渲染,在这步就会卡死.所以改成了导出.csv ...
- swift 之 mustache模板引擎
用法: Variable Tags {{name}} 用来渲染值name datas: let data = ["value": "test"] ------- ...
- [翻译]欢迎来到 C# 7.1
[翻译]欢迎来到 C# 7.1 原文: Welcome to C# 7.1 在 C# 中,我们一直倾向于主要版本:捆绑了很多功能,并且不太频繁地发布.当我们谈到 C#6.0时,我们甚至还经常忽略掉后面 ...
- A. 拼音魔法
A. 拼音魔法 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megabyt ...
- 蓝桥杯-算法训练--ALGO-5 最短路
问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到n编号). 输入格式 第一行两个整数n, m. 接下来的m行,每行有三个 ...
- $.grep()函数
定义和用法 $.grep() 函数使用指定的函数过滤数组中的元素,并返回过滤后的数组. 提示:源数组不会受到影响,过滤结果只反映在返回的结果数组中. 语法 $.grep( array, functio ...
- javascript中原型链与instanceof 原理
instanceof:用来判断实例是否是属于某个对象,这个判断依据是什么呢? 首先,了解一下javascript中的原型继承的基础知识: javascript中的对象都有一个__proto__属性,这 ...
- 定时器解决js长时间运行脚本问题
一般地,单个js操作的运行时间不应超过100毫秒,否则的话,会影响用户体验,用户会认为自己与界面失去联系.而对于一些复杂的任务,可能无法在100ms内完成,甚至会突破浏览器限制(调用栈大小限制和长时间 ...
- Linux学习(二十)软件安装与卸载(三)源码包安装
一.概述 源码包安装的优点在于它自由程度比较高,可以指定目录与组件.再有,你要是能改源码也可以. 二.安装方法 步骤 1.从官网或者信任站点下载源码包 [root@localhost ~]# wget ...
- 初识React-Redux之粗暴理解入门
权当暂记 日后再行补充完善,若有阅读者,请翻到下文黄色标题'从这里开始'起阅读. Rudex在我看来最本质做的事情就是将所有的State属性统一存储(一个属性就是一个注册到store的Reducer) ...