




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
以下是个人总结的PHP文件操作函数。当然,这只是部分,还有很多,我没有列出来。一 、解析路径:1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。eg:$path=/home/httpd/html/index.php;$file=basename($path,.php);/$fileissettoindex2 得到目录部分:dirname();给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。eg:$path=/etc/passwd;$file=dirname($path);/$fileissetto/etc3 得到路径关联数组pathinfo();得到一个指定路径中的三个部分:目录名,基本名,扩展名。eg:$pathinfo=pathinfo(www/test/index.html);var_dump($pathinfo);/$pathdirname$pathbasename$pathextenssion二、文件类型1. filetype();返回文件的类型。可能的值有 fifo,char,dir,block,link,file 和 unknown。eg:echofiletype(/etc/passwd);/fileechofiletype(/etc/);/dir三、得到给定文件有用信息数组(很有用)1. fstat();通过已打开的文件指针取得文件信息获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。eg:/打开文件$fp=fopen(/etc/passwd,r);/取得统计信息$fstat=fstat($fp);/关闭文件fclose($fp);/只显示关联数组部分print_r(array_slice($fstat,13);2. stat()获取由 filename 指定的文件的统计信息(类比fstat()四、计算大小1. filesize()返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。eg:/输出类似:somefile.txt:1024bytes$filename=somefile.txt;echo$filename.:.filesize($filename).bytes;2. disk_free_space()获得目录所在磁盘分区的可用空间(字节单位)eg/$df包含根目录下可用的字节数$df=disk_free_space(/);/在Windows下:disk_free_space(C:);disk_free_space(D:);3. disk_total_space()返回一个目录的磁盘总大小eg:(同上,换掉函数)另:如需要计算一个目录大小,可以编写一个递归函数来实现代码 functiondir_size($dir)$dir_size=0;if($dh=opendir($dir)while($filename=readdir($dh)!=false)if($filename!=.and$filename!=.)if(is_file($dir./.$filename)$dir_size+=filesize($dir./.$filename);elseif(is_dir($dir./.$filename)$dir_size+=dir_size($dir./.$filename);#endwhile#endopendirclosedir($dh);return$dir_size;#endfunction五、 访问与修改时间1.fileatime(): 最后访问时间2. filectime(): 最后改变时间(任何数据的修改)3. filemtime(): 最后修改时间(指仅是内容修改)六、 文件的I/O操作1. fopen - 打开文件或者 URLmode 说明r 只读方式打开,将文件指针指向文件头。r+ 读写方式打开,将文件指针指向文件头。w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSEeg:$handle=fopen(/home/rasmus/file.txt,r);2. file - 把整个文件读入一个数组中(此函数是很有用的)和 file_get_contents() 一样,只除了 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败 file() 返回 FALSE。eg:代码 $lines=file(/);/在数组中循环,显示HTML的源文件并加上行号。foreach($linesas$line_num=$line)echoLine#$line_num:.htmlspecialchars($line).n;/另一个例子将web页面读入字符串。参见file_get_contents()。$html=implode(,file(/);3. fgets - 从文件指针中读取一行从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。eg:$handle=fopen(/tmp/inputfile.txt,r);if($handle)while(!feof($handle)$buffer=fgets($handle,4096);echo$buffer;fclose($handle);4. fgetss - 从文件指针中读取一行并过滤掉 HTML 标记和 fgets() 相同,只除了 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。 可以用可选的第三个参数指定哪些标记不被去掉 另:对的目录的操作:1. opendir - 打开目录句柄,打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。2. readdir - 从目录句柄中读取条目,返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。eg:代码 /注意在4.0.0-RC2之前不存在!=运算符if($handle=opendir(/path/to/files)echoDirectoryhandle:$handlen;echoFiles:n;while(false!=($file=readdir($handle)echo$filen;while($file=readdir($handle)echo$filen;closedir($handle);3. scandir - 列出指定路径中的文件和目录(很有用),返回一个 array,包含有 directory 中的文件和目录。默认的排序顺序是按字母升序排列。如果使用了可选参数 sorting_order(设为 1),则排序顺序是按字母降序排列。eg:$dir=/tmp;$files1=scandir($dir);$files2=scandir($dir,1);print_r($files1);print_r($files2);另外注:七、对文件属性的操作(操作系统环境不同,可能有所不一样,这点要注意) 1文件是否可读: boolis_readable ( string filename ) 如果由 filename 指定的文件或目录存在并且可读则返回 TRUE。 记住 PHP 也许只能以运行 webserver 的用户名(通常为 nobody)来访问文件。不计入安全模式的限制。 2文件是否可写 bool is_writable ( string filename ) 如果文件存在并且可写则返回 TRUE。filename 参数可以是一个允许进行是否可写检查的目录名。 记住 PHP 也许只能以运行 webserver 的用户名(通常为 nobody)来访问文件。不计入安全模式的限制3 检查文件是否存在 boolfile_exists ( string filename ) 如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE=PHP文件操作类=php view plaincopy1. fileName_str=$fileName_str;17. $this-fileOpenMethod_str=$fileOpenMethod_str;18. 19. 20. function_destruct()21. 22. /析构函数23. 24. 25. publicfunction_get($valName_val)/欲取得的数据成员名称26. 27. /特殊函数,取得指定名称数据成员的值28. return$this-$valName_val;29. 30. 31. privatefunctionon_error($errMsg_str=UnkownError!,$errNo_int=0)/错误信息,错误代码32. 33. echo程序错误:.$errMsg_str.错误代码:.$errNo_int;/出错处理函数34. 35. 36. publicfunctionopen()37. 38. /打开相应文件,返回文件资源标识39. /根据fileOpenMethod_str选择打开方式40. switch($this-fileOpenMethod_str)41. 42. casereadOnly:43. $openMethod_str=r;/只读,指针指向文件头44. break;45. casereadWrite:46. $openMethod_str=r+;/读写,指针指向文件头47. break;48. casewriteAndInit:49. $openMethod_str=w;/只写,指针指向文件头将大小截为零,不存在则创建50. break;51. casereadWriteAndInit:52. $openMethod_str=r+;/读写,指针指向文件头将大小截为零,不存在则创建53. break;54. casewriteAndAdd:55. $openMethod_str=a;/只写,指针指向文件末尾,不存在则创建56. break;57. casereadWriteAndAdd:58. $openMethod_str=a+;/读写,指针指向文件末尾,不存在则创建59. break;60. default:61. $this-on_error(Openmethoderror!,310);/出错处理62. exit;63. 64. 65. /打开文件66. if(!$fp_res=fopen($this-fileName_str,$openMethod_str)67. 68. $this-on_error(Cantopenthefile!,301);/出错处理69. exit;70. 71. 72. return$fp_res;73. 74. 75. publicfunctionclose($fp_res)/由open返回的资源标识76. 77. /关闭所打开的文件78. if(!fclose($fp_res)79. 80. $this-on_error(Cantclosethefile!,302);/出错处理81. exit;82. 83. 84. 85. publicfunctionwrite()/$fp_res,$data_str,$length_int:文件资源标识,写入的字符串,长度控制86. 87. /将字符串string_str写入文件fp_res,可控制写入的长度length_int88. /判断参数数量,调用相关函数89. $argNum_int=func_num_args();/参数个数90. 91. $fp_res=func_get_arg(0);/文件资源标识92. $data_str=func_get_arg(1);/写入的字符串93. 94. if($argNum_int=3)95. 96. $length_int=func_get_arg(2);/长度控制97. if(!fwrite($fp_res,$data_str,$length_int)98. 99. $this-on_error(Cantwritethefile!,303);/出错处理100. exit;101. 102. 103. else104. 105. if(!fwrite($fp_res,$data_str)106. 107. $this-on_error(Cantwritethefile!,303);/出错处理108. exit;109. 110. 111. 112. 113. publicfunctionread_line()/$fp_res,$length_int:文件资源标识,读入长度114. 115. /从文件fp_res中读入一行字符串,可控制长度116. /判断参数数量117. $argNum_int=func_num_args();118. $fp_res=func_get_arg(0);119. 120. if($argNum_int=2)121. 122. $length_int=func_get_arg(1);123. if($string_str=!fgets($fp_res,$length_int)124. 125. $this-on_error(Cantreadthefile!,304);/出错处理126. exit;127. 128. return$string_str;129. 130. else131. 132. if(!$string_str=fgets($fp_res)133. 134. $this-on_error(Cantreadthefile!,304);/出错处理135. exit;136. 137. return$string_str;138. 139. 140. 141. publicfunctionread($fp_res,$length_int)/文件资源标识,长度控制142. 143. /读入文件fp_res,最长为length_int144. if(!$string_str=fread($fp_res,$length_int)145. 146. $this-on_error(Cantreadthefile!,305);/出错处理147. exit;148. 149. return$string_str;150. 151. 152. publicfunctionis_exists($fileName_str)/文件名153. 154. /检查文件$fileName_str是否存在,存在则返回true,不存在返回false155. returnfile_exists($fileName_str);156. 157. 158. /*取得文件大小*/159. /*160. 取得文件fileName_str的大小161. $fileName_str是文件的路径和名称162. 返回文件大小的值163. */164. publicfunctionget_file_size($fileName_str)/文件名165. 166. returnfilesize($fileName_str);167. 168. 169. /*转换文件大小的表示方法*/170. /*171. $fileSize_int文件的大小,单位是字节172. 返回转换后带计量单位的文件大小173. */174. publicfunctionchange_size_express($fileSize_int)/文件名175. 176. if($fileSize_int1024)177. 178. $fileSizeNew_int=$fileSize_int/1024;/转换为K179. $unit_str=KB;180. if($fileSizeNew_int1024)181. 182. $fileSizeNew_int=$fileSizeNew_int/1024;/转换为M183. $unit_str=MB;184. 185. $fileSizeNew_arr=explode(.,$fileSizeNew_int);186. $fileSizeNew_str=$fileSizeNew_arr0.substr($fileSizeNew_arr1,0,2).$unit_str;187. 188. return$fileSizeNew_str;189. 190. /*重命名文件*/191. /*192. 将oldname_str指定的文件重命名为newname_str193. $oldName_str是文件的原名称194. $newName_str是文件的新名称195. 返回错误信息196. */197. publicfunctionrename_file($oldName_str,$newName_str)198. 199. if(!rename($oldName_str,$newName_str)200. 201. $this-on_error(Cantrenamefile!,308);202. exit;203. 204. 205. 206. /*删除文件*/207. /*208. 将filename_str指定的文件删除209. $fileName_str要删除文件的路径和名称210. 返回错误信息211. */212. publicfunctiondelete_file($fileName_str)/213. 214. if(!unlink($fileName_str)215. 216. $this-on_error(Cantdeletefile!,309);/出错处理217. exit;218. 219. 220. 221. /*取文件的扩展名*/222. /*223. 取filename_str指定的文件的扩展名224. $fileName_str要取类型的文件路径和名称225. 返回文件的扩展名226. */227. publicfunctionget_file_type($fileName_str)228. 229. $fileNamePart_arr=explode(.,$fileName_str);230. while(list(,$fileType_str)=each($fileNamePart_arr)231. 232. $type_str=$fileType_str;233. 234. return$type_str;235. 236. 237. /*判断文件是否是规定的文件类型*/238. /*239. $fileType_str规定的文件类型240. $fileName_str要取类型的文件路径和名称241. 返回false或true242. */243. publicfunctionis_the_type($fileName_str,$fileType_arr)244. 245. $cheakFileType_str=$this-get_file_type($fileName_str);246. if(!in_array($cheakFileType_str,$fileType_arr)247. 248. returnfalse;249. 250. else251. 252. returntrue;253. 254. 255. 256. /*上传文件,并返回上传后的文件信息*/257. /*258. $fileName_str本地文件名259. $filePath上传文件的路径,如果$filePath是str则上传到同一目录用一个文件命名,新文件名在其加-1,2,3.,如果是arr则顺序命名260. $allowType_arr允许上传的文件类型,留空不限制261. $maxSize_int允许文件的最大值,留空不限制262. 返回的是新文件信息的二维数组:$reFileInfo_arr263. */264. publicfunctionupload_file($fileName_str,$filePath,$allowType_arr=,$maxSize_int=)265. 266. $fileName_arr=$_FILES$fileName_strname;/文件的名称267. $fileTempName_arr=$_FILES$fileName_strtmp_name;/文件的缓存文件268. $fileSize_arr=$_FILES$fileName_strsize;/取得文件大小269. $reFileInf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京林业大学《无机材料科学与技术》2023-2024学年第二学期期末试卷
- 财务报表培训
- 石家庄铁路职业技术学院《有害生物风险分析》2023-2024学年第二学期期末试卷
- 《红楼梦的情节解析》课件
- 着色混凝土改造施工方案
- 院内急救操作规范
- 《新能源发展趋势分析》课件
- 清华大学《织员工激励》2023-2024学年第二学期期末试卷
- 邵阳学院《图形创意与表现》2023-2024学年第二学期期末试卷
- 2025如何处理丢失的劳动合同以办理退休手续
- 《第三节祖国的宝岛-台湾》教学设计(安徽省市级优课)-八年级地理教案
- 软件供应链安全解决方案项目初步(概要)设计
- 工程力学答案
- (完整版)聚乙烯课件
- 高风险供应商管理程序(经典-专业-建议收藏)
- 振动试验报告
- 2023年新高考生物江苏卷试题真题答案解析版(精校打印)
- 起重工岗位风险告知书
- 自动飞行控制系统课件
- 【基于近五年数据的鸿星尔克财务报表分析15000字】
- 银川市西夏区国有企业招聘考试真题2022
评论
0/150
提交评论