此篇实现了 PHP 对文件的系列操作, 包括文件的读写和处理, 文件的上传, 文件的下载.
1, 简单写文件: file_put_contents("文件名","数据字符串");// 写数据到文件
2, 简单读文件:$ 内容 1=file_get_contents("文件名");// 从文件中读取内容到内容 1 中
//file_put_contents("ww.txt",file_get_contents("http://localhost:8080/ main.php"));// 获取网页源码
3, 读文件并输出: readfile("ww.txt");// 也可传递 URL, 内容自接输出无需加 echo 等
4, 读文件以行为单位存入数组:$ 文件行数组 = file("文件名");
5, 取目录名: dirname($ 文件路径字符串)// 返回目录字符串
6, 获取文件名: basename("字符串");// 获取文件名
7, 创建目录: mkdir("目录名字符串")// 创建的目录必须是一个, 存在会出现错误 // 第二个参数如: 0777
8, 删除空目录: rmdir("空目录名");// 返回 bool
9, 创建文件: touch("文件名")// 返回 bool
10, 删除文件: unlink("文件名或文件名路径");
11, 检查文件或目录是否存在: file_exists("文件字符串")// 返回 bool
12, 基本判断 (内容必须存在): 判断是否是目录 [is_dir("字符串")] , 判断是否是文件 [is_file("字符串")]
13, 获取文件修改时间: filemtime("文件字符串");// 返回时间戳
14, 获取文件大小: filesize("文件字符串");// 返回字节数
15, 文件重命名和移动: rename("原文件","新文件");// 返回 bool
16, 文件复制: copy("原文件","新文件");// 返回 bool
17, 文件权限:[is_readable()] ,[is_writable()] [is_executable()] // 读 写 执行
18, 目录分隔符: DIRECTORY_SEPARATOR;// 在 liux 系统为 "/", 在 win 下为 "\"
19, 换行符: PHP_EOL// 在 liux 系统为 "\n", 在 win 下位 "\r\n"
20, 获取磁盘总大小: echo disk_total_space("C:");// 返回字节数
21, 获取磁盘可用空间总大小: echo disk_free_space("C:");// 返回字节数
echo "C 磁盘总大小:".round(disk_total_space("C:")/pow(2,30),2)."G";// 打印以 G 为单位大小
22, 目录: 当前目录 (点加斜杠)[ . /] , 上级目录 (点点加斜杠)[ . . /]
23, 打印目录下文件: print_r(glob("dirdong/*php"));// 获取文件夹 dirdong 下的 PHP 文件, 无到子目录
24, 遍历文件夹:
- $dir=opendir("./dirdong");// 打开文件资源
- while($fi=readdir($dir)){// 循环
- if(is_dir("./dirdong/".$fi)) echo "目录:".$fi."<br/>";
- if(is_file("./dirdong/".$fi)) echo "文件:".$fi."<br/>";
- }
- closedir($dir);// 关闭文件资源
25, 利用文件指针的方式读写文件:
- /* 打开模式:
- r 只读方式, 文件指针处于开始
- r+ 读写方式, 文件指针处于开始, 文件无报错
- w 只写方式, 文件指针处于开始
- w+ 读写方式, 文件指针处于开始, 文件无则创建
- a 写追加方式, 文件指针处于末尾, 文件无则创建
- a+ 读写方式, 文件指针处于末尾, 文件无则创建
- rb wb 二进制读写方式
- rt wt 文本方式读写方式
- */
- $f=fopen("ww.txt","r+");// 打开文件 ww.txt 资源
- fseek($f,3);// 从前往后移动文件指针 3 个字节
- fseek($f,-2,SEEK_END);// 从后往前移动文件指针 2 个字节
- rewind($f);// 将指针数组移动至开头
- echo ftell($f);// 查看文件指针位置
- // 循环读取文件内容
- //while(!feof($f)){// 判断文件结尾
- //echo fgetc($f);// 只读取一个字节
- //}
- //echo fgets($f);// 一次读一行
- //echo fread($f,2);// 读取两个字节
- //fwrite($f,"32w 东小东 \ nxxx");// 写内容
- fclose($f);// 关闭文件资源
26, 文件锁, 防止同时操作文件造成数据絮乱:
- flock($f,LOCK_EX);// 设置写锁, 返回 bool
- flock($f,LOCK_SH);// 设置读锁, 返回 bool
- // 文件读写操作
- flock($f,LOCK_UN);// 释放锁, 返回 bool
27, 文件上传到服务器:
html:
- <form action="wan.php" method="post" enctype="multipart/form-data">
- <input type="text" name="namexx">
- <br>
- <input type="file" name="filexx">
- <br/>
- <input type="submit" value="东小东上传">
- </form>
PHP:
- //error_reporting("E_ALL & ~ E_NOTICE");
- echo '<meta charset="utf-8">';// 解决乱码问题
- //post 数据, 无文件数据
- print_r($_POST);
- // 文件数据 名字, 类型, 零时目录, 大小等
- print_r($_FILES["filexx"]);
- // 设置保存地址
- $filepath="img/".$_POST["namexx"];
- // 拷贝零时文件到保存目录
- if(move_uploaded_file($_FILES["filexx"]["tmp_name"],$filepath)){
- echo "上传成功";
- }else{
- echo "上传失败";
- }
文件上传错误值:
28, 多文件上传基本思路: 利用文件数组
- <input type="file" name="filexx[]">
- <input type="file" name="filexx[]">
29, 文件下载: 通过返回头告诉客户端此为附件即可
- // 告诉浏览器此文件为附件 (可下载, 不用浏览器解析)
- header("Content-Disposition:attachment;filename = 任意文件名 1");
- // 输出内容
- readfile("任意文件名 1");
来源: https://www.cnblogs.com/dongxiaodong/p/10066333.html