【文件操作】
【文件读取和写入】
文件有读 、 写 、 删除 、修改 、 创建 、权限
内存 就好比人类的大脑 抽象处理
硬盘 就是人类你脑袋想完的事情 存到某个位置 (纸,墙)
读取文件就是把文件里面的内容读取到内存里面
写入文件的时候就是把内存里面处理的东西寸到硬盘里面
【readfile】
读取文件并且输出到浏览器
【file】
将文件读取到一个数组当中
必须要会【file_get_contents】
就是把文件中的内容以字符串形式读取出来
join implode(操作数组,把数组按照你指定的字符切割) explode (字符串)
【file_put_contents】
把内容写到一个文件里面去 如果文件不存在 创建
【文件打开,写入 ,关闭】
【四大金刚】
第一步
打开
第二步
确定打开方式
第三步
读取或者写入数据
第四步
关闭
fopen(文件,模式)
r 以只读方式打开,只能读取,文件不存在报错
r+ 读写方式打开,将文件指针指向文件头。 (覆盖写)
w 以写入方式打开 如果文件不存在则创建 如果存在写入 请清空写入
W+ 于w相同 但是可以读取
a 以写入方式打开 文件不存在创建 讲指针指向文件的末尾 累加写
a+ 文件读写方式打开 累加写 指针在末尾 -----append
x 文件存在报错 不存在创建(了解一下)
x+ 创建并以读写方式打开,其他的行为和 'x' 一样。
注意:如果你想的读取 把指针移动 用 fseek
注意:以a模式打开你用fseek 操作文件的指针是没有作用的
fwrite() //写入文件 -----fputs
fread() //读取文件
fclose() //关闭文件
fseek 移动指针
feof()测试文件指针是否到了文件结束的位置
ftell 返回文件指针读/写的位置
rewind — 倒回文件指针的位置 他就好比 fseek($fp , 0)
fgetc — 从文件指针中读取字符
fgets — 从文件指针中读取一行
fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
ftruncate — 将文件截断到给定的长度
文件锁
flock
LOCK_SH取得共享锁定(读取的程序)
LOCK_EX 取得独占锁定(写入的程序)
LOCK_UN 释放锁定(无论共享或独占)
【文件的路径的问题】
pathinfo(); 获取的是文件的路径的信息
basename(); 获取文件名字
dirname(); 返回文件的目录结构
http_build_query 将数组变成url参数 字符串格式
parse_url — 解析 URL,返回其组成部分 数组格式 必须要会
parse_str — 将字符串解析成多个变量
username=xiaoliang&password=aiwo&sex=kongkong
echo $username,$password,$sex;
常量
DIRECTORY_SEPARATOR; \
目录 linux /
文件夹 windows \
【文件判断】 这些记着
file_exists(); //判断文件是否存在
is_file()//判断是否是个文件
is_dir()//判断是否是个目录
is_writeable//是否可写
is_readable//可读
is_executable//可执行
【判断文件大小,时间】
byte
1024b = 1kb
1024kb = 1Mb
1024MB = 1GB
fisesize();
fstat — 通过已打开的文件指针取得文件信息 看看就行了
filectime — 取得文件的创建时间 create
filemtime — 取得文件的修改时间 modify
fileatime — 取得文件的上次访问时间 active
【权限问题】(了解一下就OK)
chmod(); 改变模式
0755
0777 最大权限 可读可写可执行
所有者 chown — 改变文件的所有者
所属组 charp
其他
权限三种 r读 w写 x执行
【文件夹的操作】
mkdir() //创建文件夹
1、 文件夹名字
2、 赋值权限 0777 可读可写可执行
3、 true 递归创建
rmdir() //删除文件夹
注意:如果文件夹下面还有东西, 不能删除 只能删除一级级的往上删除
opendir() //打开文件夹
closedir() //关闭文件夹
readdir() //readdir — 从目录句柄中读取条目
unlink //删除文件
copy //拷贝文件
rename 重命名
【重点】
面试题很常见(
递归删除目录
)
//背你也要背下来
rm('a');
function rm($path)
{
//打开目录
$dir = opendir($path);
//跳过系统目录的两个点
readdir($dir);
readdir($dir);
//循环删除
while ($newFile = readdir($dir)) {
//拼接路径
$newPath = $path . '/' .$newFile;
//判断是否是文件 ,不是文件的时候再调用自己
if (is_file($newPath)) {
unlink($newPath);
} else {
rm($newPath);
rmdir($newPath);
}
}
closedir($dir);
rmdir($path);
}
【文件上传和下载】
作用
1、网盘 附件
2、种子
3、头像
4、相册 QQ 空间
【文件上传七伤拳】
上传步骤
1、
准备form表单,查看$_FILES 看结构
2、
判断错误号
3、
判断文件是否超过了你指定的文件大小
4、
判断文件mime类型和文件后缀名是否符合你指定的范围
5、
生成文件新路径和新的文件名
6、
判断是不是上传文件
7、将你上传的文件的临时文件移动到你指定的位置(写入数据库)
注意事项
在你的php.ini里面的选项
file_uploads = On
max_file_uploads = 20 允许同时上传的数量
upload_max_filesize = 2M 允许你上传文件的最大值
upload_tmp_dir ="C:/wamp64/tmp" 上传文件的临时目录
关于form表单问题
提交方式必须是post
form 里面必须写enctype="multipart/form-data"
type 必须是file
如果你想在上传时候在html里面写下面这句话 注意要写在最上面
<input type="hidden" name="MAX_FILE_SIZE" value="100" />
两个函数
is_uploaded_file() //判断是否是上传文件
move_uploaded_file(); //移动上传文件
【多文件上传】
var_dump($_FILES);
for ($i = 0; $i<count($_FILES['f']['name']); $i++) {
$newPath = 'upload/'.$_FILES['f']['name'][$i];
//echo $newPath.'<br />';
move_uploaded_file($_FILES['f']['tmp_name'][$i] , $newPath);
}
【文件下载】
1、告诉浏览器类型
2、告知附件
3、告知大小 可以加也可以不加
4、输出内容
【状态码】
常见HTTP状态码 面试题常考
1xx:信息
100:继续,服务器接收到部分请求
101:切换协议
2xx:成功
200:请求成功
202:已接受但还未处理
204:没有文档
3xx:重定向
301:选择跳转
305:使用location信息
4xx:客户端错误
400:错误请求
401:验证失败
403:拒绝访问
404:页面未找到
405:请求方法不准许
5xx:服务器错误
500:服务器内部错误
501:不支持该请求
502:错误网关
503:无法服务(过载/宕机)
504:网关超时
505:不支持的HTTP协议版本
【多字节转换函数】
mb_substr();
//iconv 没事的时候可以常看看好不好
iconv — 字符串按要求的字符编码来转换