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码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
随机推荐
- 在 ASP.NET Core 中使用 SignalR
https://weblogs.asp.net/ricardoperes/signalr-in-asp-net-core 作者:Ricardo Peres 译者:oopsguy.com 介绍 Sign ...
- 用BroadcastReceiver监听手机网络状态变化
android--解决方案--用BroadcastReceiver监听手机网络状态变化 标签: android网络状态监听方案 2015-01-20 15:23 1294人阅读 评论(3) 收藏 举报 ...
- Buy the Ticket(卡特兰数+递推高精度)
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- hive的简单理解--笔记
Hive的理解 数据仓库的工具 Hive仅仅是在hadoop上面包装了SQL: Hive的数据存储在hadoop上 Hive的计算由MR进行 Hive批量处理数据 Hive的特点 1 可扩展性(h ...
- [DeeplearningAI笔记]ML strategy_2_3迁移学习/多任务学习
机器学习策略-多任务学习 Learninig from multiple tasks 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.7 迁移学习 Transfer Learninig 神 ...
- struts2常见错误
1.Caught exception while loading file struts-default.xml - [unknown location]解决办法:由于lib包冲突造成的,将两个解析x ...
- .NET项目从CI到CD-Jenkins_Pipeline的应用
一.罗里吧嗦 最近迁移了服务器,顺道完善下服役了一两年的Jenkins服务,主要是把Slave搭建起来,还有等等.本文只是我对Jenkins Pipeline的一些自己的理解与应用,欢迎指出错误,欢迎 ...
- Jquery基础笔记
1.$(function(){ 等价于 window.onload=function(){ }) } 2 ...
- Redis的使用初探
Redis Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化. 与其它键值数据存储相比,Redis有一组相对丰富的数据类型. Redis可以将数据复制到任意数量的从机中 Redis的安装 官 ...
- jquery mobile小案例
---恢复内容开始--- [jquery mobile小案例]效果图如下: 首先先创建一个页面主要使用data-role="page"这个指令,我们给它起个id="pag ...