cari

目录自定义函数

PHP中并不提供查询目录大小、复制目录、删除有文件的目录的函数,我们需要自己编写

这个函数只要传递一个url,就能递归查询目录中的文件大小,从而统计出目录大小

<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span>     <span style="color: #0000ff;">function</span> dirSize(<span style="color: #800080;">$dir</span><span style="color: #000000;">){</span><span style="color: #008080;"> 3</span>         <span style="color: #800080;">$dirsize</span> = 0<span style="color: #000000;">;</span><span style="color: #008080;"> 4</span>         <span style="color: #800080;">$url</span> = <span style="color: #008080;">opendir</span>(<span style="color: #800080;">$dir</span><span style="color: #000000;">);</span><span style="color: #008080;"> 5</span>         <span style="color: #0000ff;">while</span>(<span style="color: #800080;">$filename</span> = <span style="color: #008080;">readdir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">)){</span><span style="color: #008080;"> 6</span>             <span style="color: #800080;">$file</span> = <span style="color: #800080;">$dir</span>.'/'.<span style="color: #800080;">$filename</span><span style="color: #000000;">;</span><span style="color: #008080;"> 7</span>             <span style="color: #0000ff;">if</span>(!(<span style="color: #800080;">$filename</span>=='.' || <span style="color: #800080;">$filename</span>=='..'<span style="color: #000000;">)){</span><span style="color: #008080;"> 8</span>                 <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_dir</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">)){</span><span style="color: #008080;"> 9</span>                     <span style="color: #800080;">$dirsize</span> += dirSize(<span style="color: #800080;">$file</span><span style="color: #000000;">);</span><span style="color: #008080;">10</span>                 }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">11</span>                     <span style="color: #800080;">$dirsize</span> += <span style="color: #008080;">filesize</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">);</span><span style="color: #008080;">12</span> <span style="color: #000000;">                }</span><span style="color: #008080;">13</span> <span style="color: #000000;">            }</span><span style="color: #008080;">14</span> <span style="color: #000000;">        }</span><span style="color: #008080;">15</span>         <span style="color: #008080;">closedir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">);</span><span style="color: #008080;">16</span>         <span style="color: #0000ff;">return</span> <span style="color: #800080;">$dirsize</span><span style="color: #000000;">;</span><span style="color: #008080;">17</span>     }

 

这个函数需要传递两个url,分别是旧目录和新目录,就能复制该目录及文件

<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span>     <span style="color: #0000ff;">function</span> copyDir(<span style="color: #800080;">$dirSrc</span>,<span style="color: #800080;">$dirTo</span><span style="color: #000000;">){</span><span style="color: #008080;"> 3</span>         <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_file</span>(<span style="color: #800080;">$dirTo</span><span style="color: #000000;">))</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">        {</span><span style="color: #008080;"> 5</span>             <span style="color: #0000ff;">echo</span> '目标不是目录不能创建!'<span style="color: #000000;">;</span><span style="color: #008080;"> 6</span>             <span style="color: #0000ff;">return</span><span style="color: #000000;">;</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        }</span><span style="color: #008080;"> 8</span>         <span style="color: #0000ff;">if</span>(!<span style="color: #008080;">file_exists</span>(<span style="color: #800080;">$dirTo</span><span style="color: #000000;">))</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">        {</span><span style="color: #008080;">10</span>             <span style="color: #008080;">mkdir</span>(<span style="color: #800080;">$dirTo</span><span style="color: #000000;">);</span><span style="color: #008080;">11</span> <span style="color: #000000;">        }</span><span style="color: #008080;">12</span>         <span style="color: #800080;">$dir_handle</span> = @<span style="color: #008080;">opendir</span>(<span style="color: #800080;">$dirSrc</span><span style="color: #000000;">);</span><span style="color: #008080;">13</span>         <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$dir_handle</span><span style="color: #000000;">)</span><span style="color: #008080;">14</span> <span style="color: #000000;">        {</span><span style="color: #008080;">15</span>             <span style="color: #0000ff;">while</span>(<span style="color: #800080;">$filename</span> = <span style="color: #008080;">readdir</span>(<span style="color: #800080;">$dir_handle</span><span style="color: #000000;">))</span><span style="color: #008080;">16</span> <span style="color: #000000;">            {</span><span style="color: #008080;">17</span>                 <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$filename</span>!="." && <span style="color: #800080;">$filename</span>!=".."<span style="color: #000000;">)</span><span style="color: #008080;">18</span> <span style="color: #000000;">                {</span><span style="color: #008080;">19</span>                     <span style="color: #800080;">$subSrcFile</span> = <span style="color: #800080;">$dirSrc</span> . "\\".<span style="color: #800080;">$filename</span><span style="color: #000000;">;</span><span style="color: #008080;">20</span>                     <span style="color: #800080;">$subToFile</span> = <span style="color: #800080;">$dirTo</span> . "\\".<span style="color: #800080;">$filename</span><span style="color: #000000;">;</span><span style="color: #008080;">21</span>                      <span style="color: #008080;">22</span>                      <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_dir</span>(<span style="color: #800080;">$subSrcFile</span><span style="color: #000000;">))</span><span style="color: #008080;">23</span> <span style="color: #000000;">                     {</span><span style="color: #008080;">24</span>                          copyDir(<span style="color: #800080;">$subSrcFile</span>, <span style="color: #800080;">$subToFile</span><span style="color: #000000;">);</span><span style="color: #008080;">25</span> <span style="color: #000000;">                     }</span><span style="color: #008080;">26</span>                      <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_file</span>(<span style="color: #800080;">$subSrcFile</span><span style="color: #000000;">))</span><span style="color: #008080;">27</span> <span style="color: #000000;">                     {</span><span style="color: #008080;">28</span>                           <span style="color: #008080;">copy</span>(<span style="color: #800080;">$subSrcFile</span>, <span style="color: #800080;">$subToFile</span><span style="color: #000000;">);</span><span style="color: #008080;">29</span> <span style="color: #000000;">                     }</span><span style="color: #008080;">30</span> <span style="color: #000000;">                }</span><span style="color: #008080;">31</span> <span style="color: #000000;">            }</span><span style="color: #008080;">32</span>             <span style="color: #008080;">closedir</span>(<span style="color: #800080;">$dir_handle</span><span style="color: #000000;">);</span><span style="color: #008080;">33</span> <span style="color: #000000;">        }</span><span style="color: #008080;">34</span>     }

这个函数只要传递一个url,就能递归删除目录及子目录的文件,从而删除目录

<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">function</span> rmDirAll(<span style="color: #800080;">$url</span><span style="color: #000000;">){</span><span style="color: #008080;"> 3</span>     <span style="color: #008000;">//</span><span style="color: #008000;">检测要打开目录是否存在</span><span style="color: #008080;"> 4</span>     <span style="color: #0000ff;">if</span>(!<span style="color: #800080;">$dir</span>=@<span style="color: #008080;">opendir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">)){</span><span style="color: #008080;"> 5</span>         <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    }</span><span style="color: #008080;"> 7</span>     <span style="color: #0000ff;">while</span>(<span style="color: #0000ff;">false</span> !==(<span style="color: #800080;">$file</span>=<span style="color: #008080;">readdir</span>(<span style="color: #800080;">$dir</span><span style="color: #000000;">))){</span><span style="color: #008080;"> 8</span>     <span style="color: #008000;">//</span><span style="color: #008000;">排除当前目录与父级目录</span><span style="color: #008080;"> 9</span>         <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$file</span>!=="."&&<span style="color: #800080;">$file</span>!==".."<span style="color: #000000;">){</span><span style="color: #008080;">10</span>             <span style="color: #800080;">$file</span>=<span style="color: #800080;">$url</span> .'/'. <span style="color: #800080;">$file</span><span style="color: #000000;">;</span><span style="color: #008080;">11</span>             <span style="color: #008000;">//</span><span style="color: #008000;">递归删除目录</span><span style="color: #008080;">12</span>             <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_dir</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">)){</span><span style="color: #008080;">13</span>                 rmDirAll(<span style="color: #800080;">$file</span><span style="color: #000000;">);</span><span style="color: #008080;">14</span>             }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">15</span>                 <span style="color: #0000ff;">if</span>(@<span style="color: #008080;">unlink</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">)){</span><span style="color: #008080;">16</span>                     <span style="color: #0000ff;">continue</span><span style="color: #000000;">;</span><span style="color: #008080;">17</span>                 }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">18</span>                     <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;">19</span> <span style="color: #000000;">                }</span><span style="color: #008080;">20</span> <span style="color: #000000;">            }</span><span style="color: #008080;">21</span> <span style="color: #000000;">        }</span><span style="color: #008080;">22</span>         <span style="color: #0000ff;">if</span>(@<span style="color: #008080;">rmdir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">)){</span><span style="color: #008080;">23</span>            <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #000000;">;</span><span style="color: #008080;">24</span>         }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">25</span>            <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;">26</span> <span style="color: #000000;">        }</span><span style="color: #008080;">27</span> <span style="color: #000000;">    }</span><span style="color: #008080;">28</span> }

 

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
鸿蒙原生应用随机诗词鸿蒙原生应用随机诗词Feb 19, 2024 pm 01:36 PM

想了解更多关于开源的内容,请访问:51CTO鸿蒙开发者社区https://ost.51cto.com运行环境DAYU200:4.0.10.16SDK:4.0.10.15IDE:4.0.600一、创建应用点击File->newFile->CreateProgect。选择模版:【OpenHarmony】EmptyAbility:填写项目名,shici,应用包名com.nut.shici,应用存储位置XXX(不要有中文,特殊字符,空格)。CompileSDK10,Model:Stage。Device

使用java的File.length()函数获取文件的大小使用java的File.length()函数获取文件的大小Jul 24, 2023 am 08:36 AM

使用Java的File.length()函数获取文件的大小文件大小是在处理文件操作时很常见的一个需求,Java提供了一个很方便的方法来获取文件的大小,即使用File类的length()方法。本文将介绍如何使用该方法来获取文件的大小,并给出相应的代码示例。首先,我们需要创建一个File对象来表示我们想要获取大小的文件。以下是创建File对象的方法:Filef

php blob怎么转filephp blob怎么转fileMar 16, 2023 am 10:47 AM

php blob转file的方法:1、创建一个php示例文件;2、通过“function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })}”方法实现Blob转File即可。

使用java的File.renameTo()函数重命名文件使用java的File.renameTo()函数重命名文件Jul 25, 2023 pm 03:45 PM

使用Java的File.renameTo()函数重命名文件在Java编程中,我们经常需要对文件进行重命名的操作。Java提供了File类来处理文件操作,其中的renameTo()函数可以方便地重命名文件。本文将介绍如何使用Java的File.renameTo()函数来重命名文件,并提供相应的代码示例。File.renameTo()函数是File类的一个方法,

使用java的File.getParentFile()函数获取文件的父目录使用java的File.getParentFile()函数获取文件的父目录Jul 27, 2023 am 11:45 AM

使用java的File.getParentFile()函数获取文件的父目录在Java编程中,我们经常需要操作文件和文件夹。当我们需要获取文件的父目录时,可以使用Java提供的File.getParentFile()函数来完成。本文将介绍如何使用这个函数并提供代码示例。Java中的File类是用于操作文件和文件夹的主要类。它提供了许多方法来获取和操作文件的属性

使用java的File.getParent()函数获取文件的父路径使用java的File.getParent()函数获取文件的父路径Jul 24, 2023 pm 01:40 PM

使用java的File.getParent()函数获取文件的父路径在Java编程中,我们经常需要操作文件和文件夹。有时候,我们需要获取一个文件的父路径,也就是该文件所在文件夹的路径。Java的File类提供了getParent()方法用于获取文件或文件夹的父路径。File类是Java对文件和文件夹的抽象表示,它提供了一系列操作文件和文件夹的方法。其中,get

如何使用Java中的File.delete()方法删除文件或目录?如何使用Java中的File.delete()方法删除文件或目录?Nov 18, 2023 am 08:02 AM

如何使用Java中的File.delete()方法删除文件或目录?概述:在Java中,我们可以使用File类的delete()方法来删除文件或目录。该方法用于删除指定的文件或目录。但是需要注意的是,该方法只能删除空目录或者没有被其他程序打开的文件。如果文件或目录删除失败,可以通过捕获IOException异常来查找具体原因。步骤一:导入相关的包首先,我们需要

WebView File域同源策略绕过漏洞实例分析WebView File域同源策略绕过漏洞实例分析May 15, 2023 am 08:22 AM

基本知识Android架构Kernel内核层漏洞危害极大,通用性强驱动由于多而杂,也可能存在不少漏洞Libaries系统运行库层系统中间件形式提供的运行库包括libc、WebKit、SQLite等等AndroidRunTimeDalvik虚拟机和内核库FrameWork应用框架层提供一系列的服务和API的接口活动管理器内容提供器视图资源管理器通知管理器Application应用层系统应用主屏幕Home、联系人Contact、电话Phone、浏览器Browser其他应用开发者使用应用程序框架层的A

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.