摘要:<?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文件管理系统做准备 同时还可以当做锻炼了一些函数 继续加油吧!