文件操作方法内容学习代码练习

原创 2019-02-16 17:48:49 283
摘要:<?php //封装文件操作方法库 /**文件创建操作 *@param $filename  //需要创建的文件名 *@return string    //提示信息 **/ function create_file($filename) { //判断目录或文件是否存在,不存在则创建 if(file
<?php
//封装文件操作方法库
/**文件创建操作
*@param $filename  //需要创建的文件名
*@return string    //提示信息
**/
function create_file($filename)
{
	//判断目录或文件是否存在,不存在则创建
	if(file_exists($filename)){
		return '文件已存在!';
	} 
	// 获取文件名称,判断不存在创建
	if (!file_exists(dirname($filename))){
		mkdir(dirname($filename),0777,true);
	}
	if(touch($filename)){
		return '文件创建成功!';
	}
	return '文件创建失败!';
}

//var_dump(create_file('text1.txt'));
//var_dump(create_file('file/text1.txt'));
//删除方法
/**
*@param $filename //删除的文件名称
*@return string 提示信息
*/
function del_file($filename){
	//查询文件是否存在file_exists,判断文件是否可写is_writable,
	if(!file_exists($filename)&&!is_writable($filename)){
		return '此文件不可删除!';
	}
	//unlink直接删除文件并反馈
	if (unlink($filename)){
		return '文件删除成功!';
	}
	return '文件删除失败!';
}

//echo del_file('text1.txt');
//echo del_file('file/text1.txt');
//文件夹无法删除
//echo del_file('file');

//复制文件操作
/**
*@param $filename  //需要复制的文件名
*@param $dest      //目标目录或者文件名
*@return string    //提示信息
*/
function copy_file($filename,$dest){
	//查询文件是否存在并查询是否可写
	if(!file_exists($filename)&&!is_writable($filename)){
		return '此文件不可复制!';
	}
	//查询判断目录是否存在
	if(!is_dir($dest)){
		mkdir($dest,0777,true);
	}
	//拼接
	$destname = $dest.'/'.basename($filename);
	//查询是否存在重名文件
	if(file_exists($destname)){
		return '该目录此文件已存在!';
	}
	//复制并反馈
	if(copy($filename,$destname)){
		return '文件复制成功!';
	}
	return '文件复制失败!';
}

//echo copy_file('text1.txt','file');

//文件重命名操作
/**
*@param $oldname  //需要重命名的文件名
*@param $newname  //目标文件名
*@ruturn string   //提示信息
*/
function rename_file($oldname,$newname){
	//判断文件是否存在并是否可写
	if(!file_exists($oldname)&&!is_writable($oldname)){
		return '此文件不可重命名!';
	}
	//获取文件当前路径  dirname()用pathinfo 函数 加上参数 PATHINFO_DIRNAME 进行替换
	$path = dirname($oldname);
	$destname = $path.'/'.$newname;
	if(file_exists($destname)){
		return '此文件已存在!';
	}
	//重命名操作并验证
	if (rename($oldname,$newname)){
		return '文件重命名成功!';
	}
	return '文件重命名失败!';
}
//echo rename_file('text10.txt','text10.txt');


//文件剪切
/**
*param $filename //需要剪切的文件
*param $dest     //目标目录
*return          //提示信息
*/
function cut_file($filename,$dest){
	//判断文件
	if(!is_file($filename)){
		return '该文件不可剪切';
	}
	//is_dir判断目录是否存在
	if(!is_dir($dest)){
		mkdir($dest,0777,true);
	}
	//拼接文件路径
	$destName = $dest.'/'.basename($filename);
	//检查是否存在同名文件
	if(is_file($destName)){
		return '该文件已存在';
	}
	//执行剪切  rename()重命名和剪切操作
	if(rename($filename,$destName)){
		return '剪切成功';
	}else {
		return '剪切失败';
	}
}

//echo cut_file('text1.txt','file');

//文件信息查询操作
/**
*@param $filename     //需要查询的文件名称
*@return array|string //文件信息
*/
function get_file_info($filename){
	//判断文件是否正常并判断是否可读
	if(!is_file($filename) && !is_readable($filename)){
		return '该文件不可读取数据';
	}
	return[
	//文件类型查询
	'type' => filetype($filename),
	//文件创建时间查询
	'ctime' => date("Y-m-d H:i:s",filectime($filename)),
	//文件最后的修改时间查询
	'mtime' => date('Y-m-d H:i:s',filemtime($filename)),
	//文件最后的访问时间查询
	'atime' => date('Y-m-d H:i:s',fileatime($filename)),
	//文件字节大小查询  trans_byte()字节转换成大小
	'size' => trans_byte(filesize($filename))
	];
}

var_dump(get_file_info('text1.txt'));
echo '<hr>';
//字节转换文件大小
/**
*@param $byte   //字节大小
*@param int $precision   //保留小数位
*@return  string    //反馈信息
*/
function trans_byte($byte,$precision=2){
	$KB = 1024;
	$MB = 1024*$KB;
	$GB = 1024*$MB;
	$TB = 1024*$GB;
	if($byte<$KB){
		return $byte.'B';
	}elseif($byte<$MB){
		//round()四舍五入
		return round($byte/$KB,$precision).'KB';
	}elseif($byte<$GB){
		return round($byte/$MB,$precision).'MB';
	}elseif($byte<$TB){
		return round($byte/$GB,$precision).'GB';
	}else{
		return round($byte/$TB,$precision).'TB';
	}

}
/**
*文件读取操作
*@param $filename  //需要读取的文件名
*@return bool|string  //文件内容|提示信息
*/
function read_file($filename){
	//检查文件是否可读并检查文件是否正常
	if(is_file($filename) && is_readable($filename)){
		return file_get_contents($filename);
	}
	return '该文件不可读!';
}
//echo read_file('text1.txt');
/**
*文件以数组的形式读取返回,每一行
*@param $filename   //需要查询内容的文件名
*@param bool $skip_empty_lines //是否跳过空行
*@return array|bool|string 
*/
function read_file_array($filename,$skip_empty_lines =false)
{
	//检查文件是否正常并检查是否可读
	if(is_file($filename) && is_readable($filename)){
		//判断是否跳过空行
		if($skip_empty_lines == true){
			//查询文件内容
			return file($filename,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
		}else{
			return file($filename);
		}
	}
	return '该文件无法读取';
}
//var_dump(read_file_array('text1.txt'));
echo '<hr>';


/**文件写入的操作
*@param $filename  //目标文件
*@param $data      //写入数据
*@param bool $clear  //是否清空内容
*return string     提示信息
*/
function write_file($filename,$data,$clear =false)
{
	//获取文件目录
	$dirname = dirname($filename);
	//判断目录是否存在
	if(!file_exists($dirname)){
		mkdir($dirname,0777,true);
	}
	//判断数据类型
	if(is_array($data)||is_object($data)){
		$data = serialize($data);
	}
	//判断是否清空原文件内容
	if($clear == false){
		//判断文件是否正常并可读
		if(is_file($filename) && is_readable($filename)){
			//判断是否有内容
			if(filesize($filename)>0){
				//获取源文件内容
				$srcData =file_get_contents($filename);
				//拼接内容
				$data = $srcData.$data;
			}
		}
	}
	//写入内容并判断
	if(file_put_contents($filename,$data)){
		return '文件写入成功';
	}
	return '文件写入失败';
}
$data = [
	'name'=>'小龙女',
	'age'=>20
];
//echo write_file('text1.txt','php学习重在练习');
//echo write_file('text1.txt',$data);

//下载文件操作
/**
*@param $filename  //需要下载的文件名
*/
function dow_file($filename)
{
	//告诉浏览器返回文件的大小
	header('Accept-Length:'.filesize($filename));
	//告诉浏览器文件作为附件处理,下载完的文件名
	header('Content-Disposition:attachment;filename='.basename($filename));
	//输出文件
	redafile($filename);
}
// dow_file('www.zip');
//dow_file('tupian.jpg')

//单文件的上传操作
/**
*@param $fileInfo     //上传的文件信息
*@param string $uploadPath//上传的指定目录
*@param array $allowExt//上传文件的类型
*@param int $maxSize//上传的最大值
*@return string   //提示信息
*/
function upload_file($fileInfo,$uploadPath='./upload',$alllowExt=['jpg','png','txt','html','csv'],$maxSize=1000000)
{
	//判断文件错误号
	if($fileInfo['error'] === 0){
		//pathinfo()获取文件后缀,strtolower()转换成小写
		$ext = strtolower(pathinfo($fileInfo['name'],PATHINFO_EXTENSION));
		//判断文件类型
		if(!in_array($ext, $alllowExt)){
			return '非法文件类型!';
		}
		//判断文件大小
		if($fileInfo['size']>$maxSize){
			return '超出文件上传的最大值';
		}
		//判断文件上传方式POST
		if(!is_uploaded_file($fileInfo['tmp_name'])){
			return '非法上传操作';
		}
		//判断移动的目录是否存在,如果没有创建
		if(!is_dir($uploadPath)){
			mkdir($uploadPath,0777,true);
		}
		//uniqid()生成唯一的文件ID,重命名文件名不重复
		$uniName = md5(uniqid(microtime(true),true)).'.'.$ext;
		//拼接路径及文件名
		$dest = $uploadPath.'/'.$uniName;
		//将文件移动到指定目录
		if(!move_uploaded_file($fileInfo['tmp_name'], $dest)){
			return '文件上传失败';
		}
		return '文件上传成功';
	}else{
		switch($fileInfo['error']){
			case 1:
				$res = '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。';
				break;
			case 2:
				$res = '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';
				break;
			case 3:
				$res = '文件只有部分被上传';
				break;
			case 4:
				$res = '没有文件被上传';
				break;
			case 6:
				$res = '找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。';
				break;
			case 7:
				$res = '文件写入失败。PHP 5.1.0 引进。';
				break;
		}
		return $res;
	}
}


批改老师:灭绝师太批改时间:2019-02-16 18:12:32
老师总结:写的很不错, 封装这个方法库是为了后面的web文件管理系统做准备 同时还可以当做锻炼了一些函数 继续加油吧!

发布手记

热门词条