如何用PHP遍历文件数目 或删除目录下的全部文件?

先说一下基础知识:

文件位置如下图所示:

1、判断是文件还是目录

var_dump(filetype("./aa/bb/cc.txt"));

  输出: string(4) "file"

var_dump(filetype("./aa"));

    输出: string(3) "dir"

 2、判断是否是文件(是返回ture)

var_dump(is_file("./aa"));  

输出bool(false)

3、判断是否是目录(是返回ture)

var_dump(is_dir("./aa"));

  输出: bool(true)

4、文件的访问、创建与修改时间

echo date("Y-m-d H:i:s",fileatime("./aa")); //文件的上次访问时间

filectime("./aa.txt"); //文件的创建时间

echo date("Y-m-d H:i:s",filemtime("./aa.txt")); //文件的修改时间

 5、获取文件大小

filesize("./aa.txt");

  6、判断文件是否存在

file_exists("./aa.txt")

  7、服务器的根目录

echo $_SERVER[‘DOCUMENT_ROOT‘];

  输出:D:/phpStudy/WWW

注意:/代表根,在网页里面代表www目录,在PHP里面代表磁盘根

8、路径

echo basename("./aa/bb/cc.txt"); //获取路径中的文件名
echo dirname("../0508/DB.class.php"); //获取路径中的文件夹目录
var_dump(pathinfo("../0508/DB.class.php")); //获取路径信息
echo realpath("./aa/bb/cc.txt"); //将相对路径转化成绝对路径

  依次输出:

cc.txt

../0508

array(4) {
  ["dirname"]=>
  string(7) "../0508"
  ["basename"]=>
  string(12) "DB.class.php"
  ["extension"]=>
  string(3) "php"
  ["filename"]=>
  string(8) "DB.class"
}
D:\phpStudy\WWW\2017-05\0519\aa\bb\cc.txt

9.目录操作

mkdir("./aa"); //创建目录
rmdir("./aa"); //删除目录,目录必须为空
rename("./test","../ceshi"); //移动目录

  第一种遍历目录:

var_dump(glob("./aa/bb/*.txt")); //获取目录下所有文件

  输出:

array(6) {
  [0]=>
  string(14) "./aa/bb/cc.txt"
  [1]=>
  string(14) "./aa/bb/dd.txt"
  [2]=>
  string(14) "./aa/bb/ee.txt"
  [3]=>
  string(14) "./aa/bb/ff.txt"
  [4]=>
  string(14) "./aa/bb/gg.txt"
  [5]=>
  string(14) "./aa/bb/hh.txt"
}

第二种遍历目录:(重要)

//打开目录,返回目录资源
$dname = "./aa/bb";
$dir = opendir($dname);

//从目录资源里面读文件,每次读一个
while($fname = readdir($dir))
{
	echo $dname."/".$fname."<br>";
}

//关闭目录资源
closedir($dir);

  

输出:

./aa/bb/.
./aa/bb/..
./aa/bb/cc.txt
./aa/bb/dd.txt
./aa/bb/ee.txt
./aa/bb/ff.txt
./aa/bb/gg.txt
./aa/bb/hh.txt

10、文件整体操作

touch("./aa.txt"); //创建文件
copy("./aa.txt","../aa.txt"); //复制文件
unlink("./aa.txt"); //删除文件

11、文件内容操作

echo file_get_contents("http://www.baidu.com"); //读取文件
file_put_contents("./aa/bb/hh.txt","hello"); //写内容
readfile("./11.txt"); //读取并输出
var_dump(file("11.txt")); //读取文件内容,返回数组,每行是一个元素

  

//打开文件
$f = fopen("./11.txt","a");
//打开文件并写入
fwrite($f,"wwwww");

//关闭文件
fclose($f);

  其中:r只读;r+读写;w写清空;w+读写;a写入文件末尾;a+读写;x创建并以写入打开;x+创建并以读写打开;加一个b代表可操作二进制文件(建议加)

利用遍历来计算文件夹下所有的个数

<?php

echo fileCount("./qiyezhan");

function fileCount($fname)
{
	//该文件夹下所有文件数量
	$sum = 0;
	//判断给的是不是文件夹
	if(is_dir($fname))
	{
		//打开文件夹
		$dir = opendir($fname);

		while($wenjian = readdir($dir))
		{
			if($wenjian!="." &&$wenjian!="..")
			{
				//文件的完整路径
				$furl = $fname."/".$wenjian;
				if(is_file($furl))
				{
					$sum++;
				}
				else if(is_dir($furl))
				{
					//获取该文件夹下文件数量,累加
					$sum = $sum + fileCount($furl);
				}
			}

		}

		//关闭文件夹
		closedir($dir);
		return $sum;
	}
	else
	{
		echo "给的文件夹不对";
	}
}

?>

  利用遍历删除全部文件

<?php
ShanChu("./qiyezhan");
function ShanChu($fname)
{
	if(is_dir($fname))
	{
		//在删除之前,把里面的文件全部删掉
		$dir = opendir($fname);
		while($dname = readdir($dir))
		{
                         //必须加这一项,不然可能会将整个磁盘给删掉
			if($dname!="." && $dname!="..")
			{
				$durl = $fname."/".$dname;
				if(is_file($durl))
				{
					unlink($durl);
				}
				else
				{
					ShanChu($durl);
				}
			}
		}
		closedir($dir);
		//删除该文件夹
		rmdir($fname);
	}
	else
	{
		//如果是文件,直接删掉
		unlink($fname);
	}
}

?>

 

时间: 2024-10-20 17:29:29

如何用PHP遍历文件数目 或删除目录下的全部文件?的相关文章

php中通过递归实现删除目录下的所有文件

(本文转载于:www.klsele.com.cn) php中通过递归实现删除目录下的所有文件.,有需要的朋友可以参考下. 最近遇到一个实际问题,需要清空制定目录下的所有文件及清空数据库.清空数据库不难,但要如何递归删除一个目录下的所有文件呢. 于是去网上研究了下资料再加上自己琢磨解决了这一问题. 先贴代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?php function delFile($dirName){     if ($handl

递归删除目录下的所有文件

import java.io.File; public class DeleteDirectory { /** * 删除空目录 * @param dir 将要删除的目录路径 */ private static void doDeleteEmptyDir(String dir) { boolean success = (new File(dir)).delete(); if (success) { System.out.println("Successfully deleted empty dir

如何删除目录下所有的文件和文件夹?

import java.io.File; /** * 删除目录下所有的文件和文件夹 * @author phoebe * */ public class Recursion { public static void main(String[] args) { Recursion.delDirectory(new File("e://aa")); } /** * @param dir * 思想:方法递归相当于是方法里套方法,那么当前方法里的变量和上一层的变量不冲突 */ public s

递归删除目录下的所有文件及子目录下的所有文件

package com.test; import java.io.File; public class FileTest3 { public static void main(String[] args) { // TODO Auto-generated method stub FileTest3.doDeleteEmptyDir("e:\\new_dir1"); String newDir2 = "e:\\Hello"; boolean success = del

git删除目录下的所有文件并提交

git删除指定目录下的 所有文件, 命令如下: 1 删除 删除命令列表: 'git rm' [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>... 强制删除.idea下的所有文件 git rm -fr .idea 2 注释 git commit -m "无用" 3 提交 git push 以某个用户提交 git push origin master:master

Java项目生成可执行jar包、exe文件以及在Windows下的安装文件

1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择导出目录的文件夹中找到. 2.将刚刚生成的jar文件导出可执行的.exe文件,首先安装exe4j软件,下载地址如下:http://www.jb51.net/softs/541579.html,下载后安装破解.打开界面如下 直接下一步,选择第二个 下一步 下一步 如果要在64位下运行,则要点击下面那个

MAC删除目录下的“.svn”文件的方法

http://bbs.feng.com/read-htm-tid-7803070.html MAC删除目录的“.svn”文件:打开终端,进到所在的目录,然后出入一下代码find . -name ".svn" | xargs rm -Rf(此方法也可以删除其它隐藏文件) 发现.git文件  find . -name ".git"

删除目录下大量小文件和清空大文件

其中--delete-before    接收者在传输之前进行删除操作  可以用来清空目录或文件,如下:  1.先建立一个空目录  mkdir /data/blank  2.用rsync删除目标目录  rsync --delete-before -d /data/blank/ /var/spool/clientmqueue/  这样目标目录很快就被清空了 又假如你有一些特别大的文件要删除,比如nohup.out这样的实时更新的文件,动辄都是几十个G上百G的,也可 以用rsync来清空大文件,而且

openssl生成csr文件,将crt和key文件转换成tomcat下的jks文件

openssl req -new -newkey rsa:2048 -nodes -keyout 1dottea.com.key -out domain.com.csr 这条命令将会生成2个文件:1个csr文件和1个key文件 domain.com.csr domain.com.key 将csr文件内容复制粘贴到godaddy中,点击申请. 申请成功之后,下载将会得到一个zip压缩包,我选择的时候选择的是其他类型(没有nginx服务器,所以选择的其他). 压缩包里面有2个类似下面的文件 313f