RecursiveDirectoryIterator目录操作类,recursive
RecursiveDirectoryIterator目录操作类,recursive
<span>/*</span><span>* * @author Funsion Wu * @abstract SPL使用案例,全国首发,技术分享,欢迎转帖 </span><span>*/</span> <span>class</span> <span>Dir</span> <span>extends</span><span> RecursiveDirectoryIterator { </span><span>const</span> CHILD_FIRST = RecursiveIteratorIterator::<span>CHILD_FIRST ; </span><span>const</span> LEAVES_ONLY = RecursiveIteratorIterator::<span>LEAVES_ONLY ; </span><span>const</span> SELF_FIRST = RecursiveIteratorIterator::<span>SELF_FIRST ; </span><span>/*</span><span> ideas:将Dir类设置为不变类,无状态类 </span><span>*/</span> <span>private</span> <span>static</span> <span>function</span> getDirIterator( <span>$dir</span>, <span>$mode</span>=self::<span>LEAVES_ONLY ) { </span><span>if</span>( !<span>file_exists</span>(<span>$dir</span>) ){ <span>exit</span><span> ; } </span><span>$dirIterator</span> = <span>new</span> RecursiveDirectoryIterator(<span>$dir</span><span>); </span><span>$objIterator</span> = <span>new</span> RecursiveIteratorIterator( <span>$dirIterator</span>, <span>$mode</span><span> ); </span><span>return</span> <span>$objIterator</span><span>; } </span><span>/*</span><span>* * 递归的删除目录 + ----------------------------------------------------- + * @param $dir 要删除的目录 * @param $delSelf 决定删除目录or清空目录,默认删除目录 </span><span>*/</span> <span>public</span> <span>static</span> <span>function</span> delDir( <span>$dir</span>, <span>$delSelf</span>=<span>true</span><span> ) { </span><span>$dirIterator</span> = self::getDirIterator(<span>$dir</span>, self::<span>CHILD_FIRST); </span><span>foreach</span> ( <span>$dirIterator</span> <span>as</span> <span>$file</span><span> ) { </span><span>if</span> ( <span>$file</span>-><span>isDir() ) { @ </span><span>rmdir</span>( <span>$file</span>-><span>getRealPath() ); }</span><span>else</span><span>{ @ </span><span>unlink</span>( <span>$file</span>-><span>getRealPath() ); } } </span><span>if</span>( <span>$delSelf</span> ) { @ <span>rmdir</span>(<span>$dir</span><span>); } } </span><span>/*</span><span>* * 递归的列出目录,遍历目录 + -------------------------- + * @param $dir 要操作的目录 </span><span>*/</span> <span>public</span> <span>static</span> <span>function</span> listDir ( <span>$dir</span><span> ) { </span><span>$dirIterator</span> = self::getDirIterator( <span>$dir</span>, self::<span>SELF_FIRST ); </span><span>foreach</span> ( <span>$dirIterator</span> <span>as</span> <span>$file</span><span> ) { </span><span>$filepath</span> = <span>str_replace</span>('\\' , '/' , <span>$file</span>-><span>getPath() ); </span><span>$deep</span> = <span>substr_count</span>( <span>$filepath</span> , '/'<span> ); </span><span>if</span>( <span>$file</span>-><span>isDir() ) { </span><span>$str</span> .= '<div>$deep</span> .'px"> + '<span> ; </span><span>$str</span> .= <span>$file</span>->getBasename() .'</div>'<span> ; }</span><span>elseif</span>( <span>$file</span>-><span>isFile() ){ </span><span>$str</span> .= '<div>$deep</span> .'px">' . <span>$file</span>->getBasename() .'</div>'<span>; } } </span><span>return</span> <span>$str</span><span> ; } </span><span>/*</span><span>* * 统计目录的信息(总字节数,文件数,目录数) + -----------------------------=----------- + * @param $dir 要操作的目录 * @return 由目录信息组成的数组 </span><span>*/</span> <span>public</span> <span>static</span> <span>function</span> countDir( <span>$dir</span><span> ) { </span><span>$countDir</span> = <span>$countFiles</span> = <span>$size</span> = 0<span> ; </span><span>$dirIterator</span> = self::getDirIterator( <span>$dir</span>, self::<span>SELF_FIRST ); </span><span>foreach</span> ( <span>$dirIterator</span> <span>as</span> <span>$file</span><span> ) { </span><span>if</span>( <span>$file</span>-><span>isDir() ) { </span><span>$countDir</span>++<span> ; }</span><span>elseif</span>( <span>$file</span>-><span>isFile() ){ </span><span>$countFiles</span>++<span> ; </span><span>$size</span> += <span>$file</span>-><span>getSize() ; } } </span><span>return</span> <span>array</span>( 'countDir'=><span>$countDir</span>, 'countFiles'=><span>$countFiles</span>, 'size'=><span>$size</span>.' Byte'<span> ); } </span><span>/*</span><span>* * 递归的创建目录 + -------------------- + * @param $dir 要创建的目录 * @param $mode 所创建目录的读写权限 </span><span>*/</span> <span>public</span> <span>static</span> <span>function</span> makeDir( <span>$dir</span>, <span>$mode</span>=0644<span> ) { </span><span>return</span> <span>mkdir</span>( <span>$dir</span>, <span>$mode</span>, <span>true</span><span> ); } } </span><span>/*</span><span> ========================== 调用方法 =========================== </span><span>*/</span> <span>//</span><span> Dir::delDir('./need_del_dir'); // echo Dir::listDir('tools'); // var_dump( Dir::countDir('tools') ); // Dir::makeDir( 'aaa/ccc/ddd/eee/fff' );</span>
Directory.CreateDirectory(@"C:\123");//创建123
File.Create(@"C:\123\456.txt").Close();//创建456.txt并关闭文件
File.Copy(@"C:\123\456.txt",@"D:\456.txt");//复制文件
注意创建了文件以后要Close()。因为此时这个文件被程序占用了,就不能进行复制。
filestream不具备复制文件的方法,它只负责文件内容的读写等功能
呵呵,当前目录就是你所在的位置,通俗点就是你在哪个文件夹里,你所在的文件夹或盘就是当前目录,必须是直接所在的目录才叫当前目录
如图的当前目录为“淘宝男装”

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PyCharm是一款非常流行的Python集成开发环境(IDE),它提供了丰富的功能和工具,使得Python开发变得更加高效和便捷。本文将为大家介绍PyCharm的基本操作方法,并提供具体的代码示例,帮助读者快速入门并熟练操作该工具。1.下载和安装PyCharm首先,我们需要前往PyCharm官网(https://www.jetbrains.com/pyc

LinuxDeploy的操作步骤及注意事项LinuxDeploy是一款强大的工具,可以帮助用户在Android设备上快速部署各种Linux发行版,让用户能够在移动设备上体验到完整的Linux系统。本文将详细介绍LinuxDeploy的操作步骤以及注意事项,同时提供具体的代码示例,帮助读者更好地使用这一工具。操作步骤:安装LinuxDeploy:首先在

想必很多的用户家里都有那么几台不用的电脑,因为长时间不用完全忘记了开机密码,于是想要知道一下,忘记密码要怎么操作呢?那就一起来看看吧。win10开机密码忘记按F2怎么操作1、按下电脑的电源键,然后开机时按下F2(不同电脑品牌进入bios的按键也不同)。2、在bios界面中,找到security选项(不同品牌电脑的位置可能有所不同)。一般都在顶部的设置菜单中。3、然后找到SupervisorPassword选项并且点击。4、这时候用户就可以看到自己的密码了,同时找到旁边的Enabled切换为Dis

随着智能手机的普及,截屏功能成为日常使用手机的必备技能之一。华为Mate60Pro作为华为公司的旗舰手机之一,其截屏功能自然也备受用户关注。今天,我们就来分享华为Mate60Pro手机的截屏操作步骤,让大家能够更加便捷地进行截屏操作。首先,华为Mate60Pro手机提供了多种截屏方式,可以根据个人习惯选择适合自己的方式进行操作。下面详细介绍几种常用的截

PHP字符串操作:有效去除空格的实用方法在PHP开发中,经常会遇到需要对字符串进行去除空格操作的情况。去除空格可以使得字符串更加整洁,方便后续的数据处理和显示。本文将介绍几种有效的去除空格的实用方法,并附上具体的代码示例。方法一:使用PHP内置函数trim()PHP内置函数trim()可以去除字符串两端的空格(包括空格、制表符、换行符等),非常方便且简单易用

微信读书app手机版是一款非常不错的阅读软件,这款软件内提供的书籍作品非常多,随时随地想看就看一键搜索在线阅读,且都是官方正版授权的,不同类型的书籍整齐排序,享受舒适轻松的阅读氛围。切换不同情景的阅读模式,每天不间断更新最新的书籍章节,支持多端设备在线登录,批量下载到书架上,有无网络情况下一样能看,让大家从中发现更多知识,现在小编在线详细为微信读书伙伴们推送查看目录的方法。 1.打开需要查看目录的书籍,点击书籍中间位置。 2.点击左下方的三条线图标。 3.在弹出的窗口中,查看书籍目录即

Discuz域名修改操作指南在使用Discuz论坛系统的过程中,有时候我们需要修改论坛的域名。可能是因为需要更换域名,或者是修复一些域名解析的问题。本文将为大家详细介绍如何在Discuz论坛系统中进行域名修改操作,并给出一些具体的代码示例。1.备份数据在进行任何操作之前,我们都要先备份数据,以防止因操作失误导致数据丢失。在Discuz中,可以使用后台的数据备

饿了么这款软件里面汇集了各种不同的美食,大家可以在线挑选下单,商家接单后就会立即进行制作,用户们可以通过软件来绑定微信,想要了解具体的操作方法的话,记得来PHP中文网看看哦。饿了么绑定微信方法说明1、首先打开饿了么软件,进入到首页中后我们点击右下角的【我的】;2、然后在我的页面中我们需要点击左上角的【账号】;3、接着来到个人资料的页面中我们可以绑定手机、微信、支付宝、淘宝,在这里我们点击【微信】;4、最后点击过后在微信授权的页面中选好需要绑定的微信号之后点击【允许】即可;
