PHP文件操作类

<?php
/***************************************************************************************
文件名:File.cls.php
文件简介:类clsFile的定义,对文件操作的封装
版本:2.0  最后修改日期:2011-8-23
****************************************************************************************/
!defined('INIT_PHPV') && die('No direct script access allowed');
class clsFile
{private $fileName_str;         //文件的路径private $fileOpenMethod_str;   //文件打开模式function __construct($fileName_str='',$fileOpenMethod_str='readOnly')//路径,默认为空;模式,默认均为只读
   {//构造函数,完成数据成员的初始化$this->fileName_str=$fileName_str;$this->fileOpenMethod_str=$fileOpenMethod_str;}function __destruct(){//析构函数
   }public function __get($valName_val)//欲取得的数据成员名称
   {//特殊函数,取得指定名称数据成员的值return $this->$valName_val;}private function on_error($errMsg_str='Unkown Error!',$errNo_int=0)//错误信息,错误代码
   {echo '程序错误:'.$errMsg_str.'错误代码:'.$errNo_int;//出错处理函数
   }public function open(){//打开相应文件,返回文件资源标识//根据fileOpenMethod_str选择打开方式switch($this->fileOpenMethod_str){case 'readOnly':$openMethod_str='r';      //只读,指针指向文件头break;case 'readWrite':$openMethod_str='r+';     //读写,指针指向文件头break;case 'writeAndInit':$openMethod_str='w';      //只写,指针指向文件头将大小截为零,不存在则创建break;case 'readWriteAndInit':$openMethod_str='r+';     //读写,指针指向文件头将大小截为零,不存在则创建break;case 'writeAndAdd':$openMethod_str='a';      //只写,指针指向文件末尾,不存在则创建break;case 'readWriteAndAdd':$openMethod_str='a+';     //读写,指针指向文件末尾,不存在则创建break;default:$this->on_error('Open method error!',310);//出错处理exit;}//打开文件       if(!$fp_res=fopen($this->fileName_str,$openMethod_str)){$this->on_error('Can\'t open the file!',301);//出错处理exit;}return $fp_res;}public function close($fp_res)//由open返回的资源标识
   {//关闭所打开的文件if(!fclose($fp_res)){$this->on_error('Can\'t close the file!',302);//出错处理exit;}}public function write()//$fp_res,$data_str,$length_int:文件资源标识,写入的字符串,长度控制
   {//将字符串string_str写入文件fp_res,可控制写入的长度length_int//判断参数数量,调用相关函数$argNum_int=func_num_args();//参数个数$fp_res=func_get_arg(0);          //文件资源标识$data_str=func_get_arg(1);        //写入的字符串if($argNum_int==3){$length_int=func_get_arg(2);  //长度控制if(!fwrite($fp_res,$data_str,$length_int)){$this->on_error('Can\'t write the file!',303);//出错处理exit;}}else{if(!fwrite($fp_res,$data_str)){$this->on_error('Can\'t write the file!',303);//出错处理exit;}}}public function read_line()//$fp_res,$length_int:文件资源标识,读入长度
   {//从文件fp_res中读入一行字符串,可控制长度//判断参数数量$argNum_int=func_num_args();$fp_res=func_get_arg(0);if($argNum_int==2){$length_int=func_get_arg(1);if($string_str=!fgets($fp_res,$length_int)){$this->on_error('Can\'t read the file!',304);//出错处理exit;}return $string_str;}else{if(!$string_str=fgets($fp_res)){$this->on_error('Can\'t read the file!',304);//出错处理exit;}return $string_str;}}public function read($fp_res,$length_int)//文件资源标识,长度控制
   {//读入文件fp_res,最长为length_intif(!$string_str=fread($fp_res,$length_int)){$this->on_error('Can\'t read the file!',305);//出错处理exit;}return $string_str;}public function is_exists($fileName_str)//文件名
   {//检查文件$fileName_str是否存在,存在则返回true,不存在返回falsereturn file_exists($fileName_str);}/******************取得文件大小*********************/
/*
取得文件fileName_str的大小
$fileName_str 是文件的路径和名称
返回文件大小的值
*/public function get_file_size($fileName_str)//文件名
   {return filesize($fileName_str);}/******************转换文件大小的表示方法*********************/
/*
$fileSize_int文件的大小,单位是字节
返回转换后带计量单位的文件大小
*/public function change_size_express($fileSize_int)//文件名
   {if($fileSize_int>1024){$fileSizeNew_int=$fileSize_int/1024;//转换为K$unit_str='KB';if($fileSizeNew_int>1024){$fileSizeNew_int=$fileSizeNew_int/1024;//转换为M$unit_str='MB';}$fileSizeNew_arr=explode('.',$fileSizeNew_int);$fileSizeNew_str=$fileSizeNew_arr[0].'.'.substr($fileSizeNew_arr[1],0,2).$unit_str;}return $fileSizeNew_str;}
/******************重命名文件*********************/
/*
将oldname_str指定的文件重命名为newname_str
$oldName_str是文件的原名称
$newName_str是文件的新名称
返回错误信息
*/ public function rename_file($oldName_str,$newName_str){if(!rename($oldName_str,$newName_str)){$this->on_error('Can\'t rename file!',308);exit;}}/******************删除文件*********************/
/*
将filename_str指定的文件删除
$fileName_str要删除文件的路径和名称
返回错误信息
*/public function delete_file($fileName_str)//
   {if(!unlink($fileName_str)){$this->on_error('Can\'t delete file!',309);//出错处理exit;}}/******************取文件的扩展名*********************/
/*
取filename_str指定的文件的扩展名
$fileName_str要取类型的文件路径和名称
返回文件的扩展名
*/public function get_file_type($fileName_str){$fileNamePart_arr=explode('.',$fileName_str);while(list(,$fileType_str)=each($fileNamePart_arr)){$type_str=$fileType_str;}return $type_str;}/******************判断文件是否是规定的文件类型*********************/
/*
$fileType_str规定的文件类型
$fileName_str要取类型的文件路径和名称
返回false或true
*/public function is_the_type($fileName_str,$fileType_arr){$cheakFileType_str=$this->get_file_type($fileName_str);if(!in_array($cheakFileType_str,$fileType_arr)){return false;}else{return true;}}/******************上传文件,并返回上传后的文件信息*********************/
/*
$fileName_str本地文件名
$filePath上传文件的路径,如果$filePath是str则上传到同一目录用一个文件命名,新文件名在其加-1,2,3..,如果是arr则顺序命名
$allowType_arr允许上传的文件类型,留空不限制
$maxSize_int允许文件的最大值,留空不限制
返回的是新文件信息的二维数组:$reFileInfo_arr
*/public function upload_file($fileName_str,$filePath,$allowType_arr='',$maxSize_int='')
{      $fileName_arr=$_FILES[$fileName_str]['name'];  //文件的名称$fileTempName_arr=$_FILES[$fileName_str]['tmp_name'];  //文件的缓存文件$fileSize_arr=$_FILES[$fileName_str]['size'];//取得文件大小$reFileInfo_arr=array();$num=count($fileName_arr)-1;for($i=0;$i<=$num;$i++){if($fileName_arr[$i]!='') {if($allowType_arr!='' and !$this->is_the_type($fileName_arr[$i],$allowType_arr))//判断是否是允许的文件类型
          {$this->on_error('The file is not allowed type!',310);//出错处理break;}if($maxSize_int!='' and $fileSize_arr[$i]>$maxSize_int){$this->on_error('The file is too big!',311);//出错处理break;}$j=$i+1;$fileType_str=$this->get_file_type($fileName_arr[$i]);//取得文件类型if(!is_array($filePath)){$fileNewName_str=$filePath.'-'.($j).'.'.$fileType_str;}else{$fileNewName_str=$filePath_arr[$i].'.'.$fileType_str;}copy($fileTempName_arr[$i],$fileNewName_str);//上传文件unlink($fileTempName_arr[$i]);//删除缓存文件//---------------存储文件信息--------------------//$doFile_arr=explode('/',$fileNewName_str);$doFile_num_int=count($doFile_arr)-1;$reFileInfo_arr[$j]['name']=$doFile_arr[$doFile_num_int];$reFileInfo_arr[$j]['type']=$fileType_str;$reFileInfo_arr[$j]['size']=$this->change_size_express($fileSize_arr[$i]);}}return $reFileInfo_arr;
}/******************备份文件夹*********************/
}?>

 

转载于:https://www.cnblogs.com/joshua317/articles/4547136.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel打开后灰色不显示内容_Excel二维表转换,一分钟就够

点击蓝字关注我们44个Excel 使用技巧基本方法作为职场人&#xff0c;加班累如狗。如何更轻松的工作并获得喜人的报酬便是咱们职场人一直追求的“生活哲理”&#xff0c;说到Excel,对于办公室群体而言实在是太常见不过了&#xff0c;不管做什么&#xff0c;咱们都会跟它打交道&a…

利用PHP SOAP实现web service

一 什么是SOAP&#xff1f;可以做什么&#xff1f; SOAP 指简单对象访问协议&#xff0c;它是一种基于XML的消息通讯格式&#xff0c;用于网络上&#xff0c;不同平台&#xff0c;不同语言的应用程序间的通讯。可自定义&#xff0c;易于扩展。一条 SOAP 消息就是一个普通的 XML…

UVA350-水题

UVA350-水题 #include<iostream>using namespace std;int main() {int c 0;int Z, L, I, M;while (cin >> Z >> I >> M >> L){c;if(Z L && L I && I M && M 0){return 0;}int i 1;int K, P;I I % M;Z Z % M;K …

卷积的循环矩阵求解方法

通常我们求解一维卷积或者二维卷积都是采用模板平移的方法&#xff0c;今天我们介绍一种新的求解方法&#xff0c;可以一次性求出所有的结果。 一维卷积 卷积定义 对于两个长度分别为m和n的序列x(i)和g(i)有&#xff0c; h(i)x(i)∗g(i)∑jx(j)g(i−j)h(i)=x(i)*g(i)=\sum_…

Windows 10 开发日记(五)-- 当Binding遇到异步 -- 解决方案

前文再续&#xff0c;上一章提出了问题&#xff0c;本章提出了三种解决方案&#xff1a; 解决方案一&#xff1a;手动进行异步转换,核心思想:将binding做的事情放入CodeBehind FilterItemControl.XAML: <Grid><Image x:Name"FilterImage" Stretch"Unif…

fseek

int fseek( FILE *stream, long offset, int origin );第一个参数stream为文件指针第二个参数offset为偏移量&#xff0c;正数表示正向偏移&#xff0c;负数表示负向偏移第三个参数origin设定从文件的哪里开始偏移,可能取值为&#xff1a;SEEK_CUR、 SEEK_END 或 SEEK_SETSEEK_…

static_cast, dynamic_cast, const_cast探讨【转】

首先回顾一下C类型转换&#xff1a; C类型转换分为&#xff1a;隐式类型转换和显式类型转换 第1部分. 隐式类型转换又称为“标准转换”&#xff0c;包括以下几种情况&#xff1a;1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类…

RANSAC算法注记

今天学习了一下RANSAC随机样本一致性算法&#xff0c;其在图像融合、特征点匹配方面有很强大的应用。网上已经有很多人写了关于这方面的文档&#xff0c;就不再造轮子了。特此罗列出来&#xff0c;以供后续参考。 我的数学之美&#xff08;一&#xff09;——RANSAC算法详解 …

python字典格式_python – 格式self,这是一个字典

在这种情况下如何使格式(自我)工作&#xff1f;class Commit:number Nonesha Nonemessage Noneidentity Nonedef __init__(self, raw, number):r raw.commits[number]self.number numberself.sha r[sha]self.message r[message]self.identity raw.identities[r[identi…

委托的BeginInvoke和EndInvoke

刚刚搞明白了C#的异步调用&#xff0c;写下来&#xff0c;方便后续调用。 异步主要是解决UI假死的问题&#xff0c;而开辟出一个新的线程&#xff0c;处理大数据。 1.既然是委托的调用&#xff0c;那么先定义个委托&#xff1a; public delegate bool CheckUpdateFile(); 2.定义…

PMP 第七章 项目成本管理

估算成本 制定预算 控制成本 1.成本管理计划的内容和目的是什么? 包括对成本进行估算 预算和控制的各过程&#xff0c;从而确保项目在批准的预算内完工。 2.直接成本、间接成本、可变成本、固定成本、质量成本的内容分别是什么?成本估算的工具有哪些? 成本估算工具 1…

您的请求参数与订单信息不一致_[淘客订单检测]淘宝客订单检测接口,淘客订单查询API...

功能1.输入交易的订单编号&#xff0c;即可查询该订单是否为淘宝客订单。有意向请联系卫星weixiaot168。2.查询结果 0:不是淘宝客订单&#xff1b;1:是。3.根据淘宝官方的后台数据&#xff0c;进行检测&#xff0c;数据真实且有效。4.有效防止佣金损失&#xff0c;降低商家补单…

DebugView输出调试信息

在写windows程序时&#xff0c;需要输出一些调试信息&#xff0c;这里介绍一种极其方便的方法。即使用OutputDebugString 在Debug模式下输出调试信息&#xff0c;在Release模式下不输出。 我们可以在VS的集成平台上输出调试信息&#xff0c;也可以使用DebugView来查看调试信息…

Linux上实现ssh免密码登陆远程服务器

0.说明平常使用ssh登陆远程服务器时&#xff0c;都需要使用输入密码&#xff0c;希望可以实现通过密钥登陆而免除输入密码&#xff0c;从而可以为以后实现批量自动部署主机做好准备。环境如下&#xff1a;IP地址操作系统服务器端10.0.0.128/24CentOS 6.5 x86客户端10.0.0.129/2…

【强连通分量+概率】Bzoj2438 杀人游戏

Description 一位冷血的杀手潜入 Na-wiat&#xff0c;并假装成平民。警察希望能在 N 个人里面&#xff0c;查出谁是杀手。 警察能够对每一个人进行查证&#xff0c;假如查证的对象是平民&#xff0c;他会告诉警察&#xff0c;他认识的人&#xff0c; 谁是杀手&#xff0c; 谁是…

serialversionuid的作用_为什么阿里Java规约要求谨慎修改serialVersionUID字段

serialVersionUID简要介绍serialVersionUID是在Java序列化、反序列化对象时起作用的一个字段。Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时&#xff0c;JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进…

fatal error LNK1169: 找到一个或多个多重定义的符号 的解决方案

昨天&#xff0c;尝试一个项目&#xff0c;遇到了如下的问题。先来还原一下&#xff1a; 头文件test.h #pragma once #include <Eigen/Core> #include <iostream>using namespace Eigen; using namespace std;class point2 { public: point2(int x1,int y1):x(x…

常用工具说明--搭建基于rietveld的CodeReview平台(未测试)

为什么要codereview . 整个团队的编码风格是统一的。 . 有高手能对自己的代码指点一二&#xff0c;从而提高编码水平。 . 减少低级错误的出现 . 约束自己写高质量的代码&#xff0c;因为是要给人看的。 我们对codereview的需求 . 很轻松可以发布自己写的代码。 . 很轻松的可以与…

输入的优化

读入整型时&#xff0c;输入优化可以节省不少时间 1 typedef type long long 2 // 这里以long long为例 3 type read() { 4 type x0; int f1; 5 char chgetchar(); 6 while(ch<0||ch>9) {if(ch-) f-1; chgetchar();} 7 while(ch>0&&ch<9) …

python股票分析系统_熬了一晚上,小白用Python写了一个股票提醒系统

码农小马七夕节去相亲了&#xff0c;见了一个不错的姑娘&#xff0c;长的非常甜美&#xff01;聊着聊着很投缘&#xff01;通过介绍人了解到&#xff0c;对方也很满意&#xff5e;&#xff5e;想着自己单身多年的生活就要结束啦&#xff0c;心里满是欢喜&#xff0c;美美哒&…