文件系统处理

文件:文件和文件夹(目录)

文件属性

echo filetype("./aa.txt");//获取文件类型;如果是文件返回file;如果是目录返回dir

echo is_dir("./test");  //判断给的路径是不是目录,返回bool型

is_file("./aa.txt");  //判断给定的路径是不是文件,返回bool型

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

echo date("Y-m-d H:i:s",filectime("./aa.txt"));  //获取文件的创建时间(给出的是时间戳)

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

echo filesize("./aa.txt");  //获取文件大小

echo file_exists("./aa.txt");   //判断文件是否存在,返回bool型

目录的基本操作

一、文件路径:

1.当前目录:./或不写
2.上级目录:../

3.下级目录:文件夹名/
4.根目录:/
4.1根目录/有两层意思:如果/是在php程序中,代表“硬盘目录”;如果/是在网页程序里,代表“www目录”

做文件(头像,产品目录)上传时,保存在数据的路径一般要写绝对路径

echo $_SERVER[‘DOCUMENT_ROOT‘];  //取服务器www的根目录

echo basename("./aa.txt"); //从路径中获取文件名

echo basename("./aa.txt",".txt");  //返回没有后缀的文件名

echo dirname("./test/bb.txt");  //返回路径中的目录

var_dump(pathinfo("./test/bb.txt"));  //获取文件和目录的信息,以数组形势返回

echo realpath("./test/bb.txt");  //将相对路径转为绝对路径

二、遍历目录

遍历目录方式一:glob()

var_dump(glob("./cutfruit/*"));  //返回cutfruit文件夹下所有的文件,数组形式

var_dump(glob("./cutfruit/*.js"));  //返回ueditor文件夹下js文件(筛选)

  

练习一:获取文件夹下所有文件个数

//获取文件夹下所有文件个数
echo Shuliang("./cutfruit");

function Shuliang($filename)
{
	if(is_dir($filename))
	{
		$attr=glob($filename."/*");
		$sl=0;
		foreach($attr as $v)
		{
			if(is_dir($v))
			{
				$sl=$sl+Shuliang($v);
			}
			else
			{
				$sl++;
			}
		}
		return $sl;
	}

	else if(is_file($filename))
	{
		return 1;
	}

	else
	{
		return 0;
	}
}

  

练习二:获取文件夹下所有文件的大小总和

//获取文件夹下所有文件的大小总和
echo Size("../0521");

function Size($filename)
{
	if(is_dir($filename))
	{
		$attr=glob($filename."/*");
		$size=0;
		foreach($attr as $v)
		{
			if(is_dir($v))
			{
				$size=$size+Size($v);
			}
			else
			{
				$size=$size+filesize($v);
			}
		}
		return $size;
	}

	else if(is_file($filename))
	{
		return filesize($filename);
	}

	else
	{
		return 0;
	}
}

 

遍历目录方式二:opendir()打开指定的目录

readdir()读取指定的目录

rewinddir()重置目录指针,即将目录指针重置目录的开始处

closedir()关闭目录

//打开目录资源
$dir=opendir("./cutfruit");

echo readdir($dir),‘<br>‘; //读文件  .当前目录
echo readdir($dir),‘<br>‘; //读文件  ..上级目录
echo readdir($dir),‘<br>‘; //读文件  目录下的文件名

while($v=readdir($dir))
{
	if($v=="."||$v=="..")  //排除往上找文件
	{}
	else
	{
		echo $v."<br>";
	}
}

rewinddir($dir);//重置目录资源的指针

//关闭文件夹
closedir($dir);

  

三、建立和删除目录

mkdir("./cc");//创建文件夹

rmdir("./cc");//删除目录,只能删除空文件夹

rename("./test","./cc/ts");  //重名民、移动文件夹

  

文件操作

一、对文件的基本操作

1.文件的基本操作

touch("./cc.txt");  //创建文件

copy("./cc.txt","../cc.txt");  //复制文件

unlink("../cc.txt");  //删除文件

  2.文件的读取、写入

echo file_get_contents("./cc.txt");//读取文件内容(word、excel文件除外)
echo file_get_contents("http://www.baidu.com"); //读取远程文件内容

file_put_contents("./cc.txt","你好,世界!  hello  world!"); //写入文件,并将以前的内容覆盖(word、excel文件除外)
file_put_contents("./cc.txt",file_get_contents("http://www.baidu.com"));

  

readfile("./cc.txt");  //读取文件内容并且输出

var_dump(file("./cc.txt"));  //读取文件内容,返回数组,数组里面存储的是每一行

  

二、对文件内容的基本操作

1、文件的打开(只读模式)、读取

$fp=fopen("./cc.txt","r");  //打开文件,只读

/*echo fgetc($fp);  //读取文件内容,一个一个字符的读
echo fgetc($fp);
echo fgetc($fp);*/

while($v=fgetc($fp))
{
	echo $v;
}

echo fgets($fp);  //读取文件,一次读一行

echo fread($fp,4); //读取文件内容,可以设置读取长度

  2.文件的打开(只写模式)、写入

模式一:写入内容,之前的内容会清空

$fp=fopen("./cc.txt","w");  //打开文件,只写

fwrite($fp,"asdfg");  //写入内容,之前的内容会清空

  

模式一:写入内容,在文件内容后面追加写入

$fp=fopen("./cc.txt","a");  //打开文件,只写

fwrite($fp,"asdfg");  //写入内容,在文件后面追加写入

  

3、文件的关闭

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

  

某个文件夹里的文件全部删除函数(慎用)

<?php
	function deldir($dirname)
	{
		if(!file_exists($dirname))
		{
			die("文件夹不存在!");
		}
		//如果是文件,直接删除即可
		if(is_file($dirname))
		{
			unlink($dirname);
			exit();
		}

		//打开目录资源
		$dir = opendir($dirname);

		while($filename = readdir($dir))
		{
			if($filename !="." && $filename!="..")
			{ //*******
				$filename = $dirname."/".$filename;

				if(is_dir($filename) )
				{
					deldir($filename);
				}
				else
				{
					unlink($filename);
				}

			}
		}

		closedir($dir);
		rmdir($dirname);
	}

//调用删除文件函数
deldir("./aa");

  

时间: 2024-09-28 22:31:13

文件系统处理的相关文章

刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则

从ext3和ext4文件系统来窥探空间和文件大小的演算法则 学习操作系统就不得不研究磁盘以及磁盘文件系统,磁盘是底层物理设备,而文件系统则是管理磁盘的上层工具,文件系统规划了磁盘存放数据的格式,确定了一个操作系统能够支持多大的磁盘空间,每个分区能够支持多大的数据空间,以及每个文件所能支持的大小.通常对系统管理员而言,最需要的知道的就是最大磁盘空间,最大分区空间以及最大文件的大小.本论题只讨论这三种大小到底是怎么算出来的,而不是死记硬背.知道了原理,以后不管遇到什么文件系统,都会有章可循,至少知道

使用path监听指定文件系统的变化

在以前的JAVA版本中,如果程序需要检测文件的变化,那么需要开辟一个线程每隔一段时间去遍历一次指定的目录,如果发现此次遍历结果和上次不同,那么就认为文件变动了 ,这样的方式非常繁琐,JAVA 7之后的NIO.2 Path类提供了一个方法来监听指定文件目录内文件的变化状态. 1.获取文件系统的WatchService对 2.使用Path类的方法去注册一个监听,指定监听文件的哪些状态,如新增.修改.删除. package com.nio2; import java.io.IOException;im

Busybox构建根文件系统和制作Ramdisk

定制根文件系统的方法很多,最常用的是使用BusyBox来构建定制根文件系统.它集成压缩了Linux的许多工具和命令,可以使用户迅速方便地建立一套相对完整.功能丰富的文件系统,其中包括大量常用的应用程序.下面详细介绍有关Busybox定制根文件系统. 一.系统环境: 1.操作系统:Ubuntu140.4 2.交叉编译工具:gcc version 6.1.1 20160711 (Linaro GCC 6.1-2016.08) 3.busybox源码包:busybox-1.26.2 二.构建rootf

RH124-14 文件系统和磁盘设备管理

第十四章 文件系统和磁盘设备管理 14.1 文件系统和磁盘设备的管理与使用 磁盘设备 磁盘设备是支持随机读写数据的设备. 在物理机器上,设备文件默认都存放在/dev/目录下,第一个硬盘是/dev/sda,第二个硬盘是/dev/sdb,如此类推.第一个硬盘的第一个分区是/dev/sda1,第二个分区是/dev/sda2,如此类推. 在xen或kvm的虚拟机上,硬盘的名字则是/dev/xvda或/dev/vda等,如此类推 有些存放数据的设备并不是直接硬件对应的设备文件,而是通过软件生成的块设备文件

第九章、文件与文件系统的压缩与打包

1. 压缩文件的用途与技术 2. Linux 系统常见的压缩命令 2.1 compress 2.2 gzip, zcat 2.3 bzip2, bzcat 3. 打包命令: tar 4. 完整备份工具:dump, restore 5. 光盘写入工具 5.1 mkisofs:创建映像档 5.2 cdrecord:光盘烧录工具 6. 其他常见的压缩与备份工具 6.1 dd 6.2 cpio 7. 重点回顾 1. 压缩文件的用途与技术 2. Linux 系统常见的压缩命令 压缩文件的扩展名大多是:『*

Windows挂载NFS文件系统

主机 操作系统 IP地址 软件包 NFS主机 Centos7.2 192.168.190.128 nfs-utils.rpcbind Windows Client Windows server 2008 192.168.190.129 网络文件系统 注:以下实验均关闭防火墙以及其它安全机制 NFS主机操作: # 使用yum安装nfs-utils和管理工具rpcbind [[email protected] ~]# yum -y install nfs-utilsrpcbind # 建立共享文件夹

ii 第七单元 访问网络共享文件系统

挂载网络文件系统 网络文件系统是由网络附加存储服务器通过网络向多个主机提供的一种文件系统 , 而不是由块设备 ( 例如硬盘驱动器 ) 提供的.客户端通过特殊的文件系统协议和格式访问远程存储 Linux 中有两种主要协议可用访问网络文件系统 : NFS 和CIFS . 访问网络共享的三个基本步骤– 1. 识别要访问的远程共享– 2. 确定挂载点 ( 应该将共享挂载到的位置 ), 并创建挂载点的空目录– 3. 通过相应的名利或配置更改挂载网络文件系统 1.cifsCIFS( Comon Intern

【第三章】BCMS中应用的文件系统

因为我的mac 上mysql 的问题,造成我选择file和mongodb来做数据的持久化操作. mongodb的话,写了一小部分,已经可是可以使用,但是存在问题,所以决定先写file来进行数据操作. 之前我和小伙伴思考和讨论过这个问题,用小文件和数据库储存文件哪个会更快,数据库保存数据的方式应该和文件系统的方式一致,至于效率有待验证. 既然要使用文件系统去做数据的存储,基础的文件读取修改等方法应该写的通用,我现在还在修改这部分,因为已经在应用中发现了问题,这里先贴出来. 这里是主文件file.r

Hadoop学习笔记(3) Hadoop文件系统二

1 查询文件系统 (1) 文件元数据:FileStatus,该类封装了文件系统中文件和目录的元数据,包括文件长度.块大小.备份.修改时间.所有者以及版权信息.FileSystem的getFileStatus()方法用于获取文件或目录的FileStatus对象. 例:展示文件状态信息 public class ShowFileStatusTest{ private MiniDFSCluster cluster; private FileSystem fs; @Before public void

第三课 文件系统(上)

unix_c_03.txt====================第三课 文件系统(上)====================一.系统调用------------应用程序 -----------+| |v |各种库 |(C/C++标准库.Shell命令和脚本. |X11图形程序及库) || |v |系统调用 <----------+(内核提供给外界访问的接口函数,调用这些函数将使进程进入内核态)|v内核(驱动程序.系统功能程序)1. Unix/Linux大部分系统功能是通过系统调用实现的.如o