PHP文件操作(二)写入文件,新建、删除目录、文件,拷贝文件

本文详细介绍了PHP中文件操作和目录管理的相关函数,包括如何读写文件、创建与删除目录、以及拷贝与删除文件的基本用法。适用于开发者深入理解PHP文件系统交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10、fwrite — 写入文件(可安全用于二进制文件) 

$filePath = "1.txt";
//写入文件,如果文件不存在则尝试创建之。如果原文件有内容,会被清空。
$fp = fopen($filePath, "wb");
//写入文件,将内容追加到原文件内容的末尾。如果文件不存在则尝试创建之。
//$fp = fopen($filePath,"ab");
fwrite($fp, "\t\n欲穷千里目,\t\n更上一层楼!");
fclose($fp);

11、file_put_contents — 将一个字符串写入文件。和依次调用 fopen() , fwrite()  以及 fclose()  功能一样。循环写入内容时,不建议使用此方法!

(1)语法:int file_put_contents  ( string $filename  , mixed  $data  [, int $flags  = 0  [, resource $context  ]] )

(2)第二个参数data: 要写入的数据。类型可以是 string , array  或者是 stream  资源。
如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream()  函数。 
参数 data 可以是数组(但不能为多维数组),这就相当于 file_put_contents($filename, join('', $array))。

(3)第三个参数:flags 的值可以是 以下, 使用 OR (|) 运算符进行的组合。 

FILE_USE_INCLUDE_PATH   在 include 目录里搜索 filename。

FILE_APPEND   如果文件 filename 已经存在,追加数据而不是覆盖。 

LOCK_EX   在写入时获得一个独占锁。

$filePath = "2.txt";
$content = "\r\n咬定青山不放松,\r\n立根原在破岩中。\r\n千磨万击还坚劲,\r\n任尔东西南北风。";
//写入
file_put_contents($filePath,$content);
//追加
//file_put_contents($filePath,$content,FILE_APPEND);

12、mkdir — 新建目录 

(1)语法:bool mkdir  ( string $pathname  [, int $mode  = 0777  [, bool $recursive  = false  [, resource $context  ]]] )

(2)第二个参数mode:默认的 mode 是 0777,意味着最大可能的访问权。mode 在 Windows 下被忽略。

(3)第三个参数$recursive:是否建立多层目录。

header("Content-Type:text/html; charset=utf-8");

$newDir = "E:/newdir";
$newDirC = "E:/中文目录";
$encodeNewDirC = iconv("utf-8","gbk",$newDirC);	//转换字符编码

if(!is_dir($newDir) && mkdir($newDir)){
	echo "创建目录成功";
}else{
	echo "创建目录失败!";
}

//创建中文目录的处理方法,强烈建议不要使用中文
if(!is_dir($encodeNewDirC) && mkdir($encodeNewDirC)){
	echo "创建中文目录成功";
}else{
	echo "创建中文目录失败!";
}

//一次建立多层目录
$newNestDir = "E:/a/b/c";
$newNestDirC = "E:/中文a/中文b/c";
$encodeNestDirC = iconv("utf-8","gbk",$newNestDirC);	//转换字符编码
if(!is_dir($newNestDir)){
	if(mkdir($newNestDir,0777,true)){
		echo "创建目录成功";
	}else{
		echo "创建目录失败!";
	}
}else{
	echo "比文件夹已存在!";
}

//含有中文的处理,建立建议不要使用中文
if(!is_dir($encodeNestDirC)){
	if(mkdir($encodeNestDirC,0777,true)){
		echo "创建目录成功";
	}else{
		echo "创建目录失败!";
	}
}else{
	echo "比文件夹已存在!";
}

13、rmdir — 删除目录

(1)删除目录时, 该目录必须是空的,而且要有相应的权限。 失败时会产生一个 E_WARNING  级别的错误。 

(2)返回值:成功时返回 TRUE , 或者在失败时返回 FALSE 。

 

header("Content-Type:text/html; charset=utf-8");

$dir = "E:/newDir";
$dirC = "E:/中文目录";
$encodeDirC = iconv("utf-8","gbk",$dirC);	//转换字符编码,从UTF-8,转换为gbk
if(is_dir($dir)){
	if(rmdir($dir)){
		echo "删除成功!";
	}else{
		echo "删除失败!";
	}
}else{
	echo "目录不存在!请检查!";
}

if(is_dir($encodeDirC)){
	if(rmdir($encodeDirC)){
		echo "删除成功!";
	}else{
		echo "删除失败!";
	}
}else{
	echo "目录不存在!请检查!";
}

14、创建文件:写入文件内容时,如果文件不存在,会自动创建文件。

15、unlink -  删除文件

 header("Content-Type:text/html; charset=utf-8");

$file = "E:/new name.jpg";
$fileC = "E:/中文/which step.jpg";			//还是中文问题处理
$encodefileC = iconv("utf-8","gbk",$fileC);	//转换字符编码
if(is_file($file)){
	if(unlink($file)){
		echo "删除成功!";
	}else{
		echo "删除失败!";
	}
}else{
	echo "文件不存在!";
}

//含中文的处理
if(is_file($encodefileC)){
	if(unlink($encodefileC)){
		echo "删除成功!";
	}else{
		echo "删除失败!";
	}
}else{
	echo "文件不存在!";
}

16、copy — 拷贝文件 

(1)语法:bool copy  ( string $source  , string $dest  [, resource $context  ] )

(2)第二个参数dest:目标路径。如果目标文件已存在,将会被覆盖。如果 dest 是一个 URL,则如果封装协议不支持覆盖已有的文件时拷贝操作会失败。

header("Content-Type:text/html; charset=utf-8");

$source = "G:/which step.jpg";
$dest = "E:/new name.jpg";
$dest2 = "E:/中文/which step.jpg";			//路径中含有中文时
$encodeDest2 = iconv("utf-8","gb2312",$dest2);	//转换字符编码
if(copy($source,$dest)){
	echo "拷贝$source 到$dest 成功!";
}else{
	echo "拷贝失败!";
}
//含中文路径的拷贝
if(copy($source,$encodeDest2)){
	echo "拷贝$source 到$dest2 成功!";
}else{
	echo "拷贝失败!";
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值