摘要:终于听到韦小宝的声音了 233333 一篇长篇总结开始了... 虽说长篇 不过函数都很简单一.文件信息相关函数 1. filetype() 获取文件类型 2.filesize() 获取文件的大小 &nbs
终于听到韦小宝的声音了 233333 一篇长篇总结开始了... 虽说长篇 不过函数都很简单
一.文件信息相关函数
1. filetype() 获取文件类型
2.filesize() 获取文件的大小 //单位:字节
3.filectime() 获取文件创建时间 //返回时间戳
4.filemtime() 获取文件修改时间 //返回时间戳
5.fileatime() 获取文件最后访问时间 //返回时间戳
6.is_readable() 检查文件是否可读
7.is_writable() 检查文件可写性
8.is_executable()检查文件可执行性
9.拓展( date_default_timezone_set('Asia/Shanghai') ) 设置默认时区
$fileName = 'text.txt'; //设置文件变量
echo filetype($fileName).'<br>'; //file文件 dir目录
echo filesize($fileName).'<br>'; //单位:字节
echo '文件创建的时间为:'.date('Y-m-d H:i:s',filectime($fileName)).'<br>'; //时间戳
echo '文件修改的时间为:'.date('Y-m-d H:i:s',filemtime($fileName)).'<br>'; //时间戳
echo '文件最后访问的时间为:'.date('Y-m-d H:i:s',fileatime($fileName)).'<br>'; //时间戳
var_dump(is_readable($fileName)); //布尔值
var_dump(is_writable($fileName)); //布尔值
var_dump(is_executable($fileName)); //布尔值二.文件路径相关函数
path_info() 返回一个路径相关信息的数组 传入第二个参数的话则返回特定的信息 第二个参数如下
path_info($fileName,PATHINFO_BASENAME) 返回带后缀的文件名
等价函数: basename($fileName)
echo pathinfo($fileName,PATHINFO_BASENAME).'<br>'; echo basename($fileName).'<br>';
path_info($fileName,PATHINFO_DIRNAME)返回文件路径部分
等价函数:dirname($fileName)
echo pathinfo($fileName,PATHINFO_DIRNAME).'<br>'; echo dirname($fileName).'<br>';
path_info($fileName,PATHINFO_EXTENSION)返回文件后缀名
echo pathinfo($fileName,PATHINFO_EXTENSION).'<br>';
path_info($fileName,PATHINFO_FILENAME)返回文件名不带后缀名
echo pathinfo($fileName,PATHINFO_FILENAME).'<br>';
file_exists($fileName)判断文件是否存在 返回布尔值
if(file_exists($fileName)){
echo '此文件存在';
}else{
echo '此文件不存在';
}三.文件操作相关函数
1.touch() 可以创建一个文件,并且可以修改一个已经存在的文件的访问时间,以及修改时间
2.unlink() 可以删除一个文件
3.rename() 可以重命名文件或者文件夹 ,还可以通过新文件名的路径来实现剪切操作
4.copy 复制文件 还可以拷贝远程文件 需要开启 php.ini的 allow_url_fopen = On
var_dump(touch('text1.txt')); //创建一个text1.txt文件
var_dump(unlink('text1.txt')); //删除刚刚创建的text1.txt文件
var_dump(rename('text/text1.txt','text/text.txt')); //将text1.txt重命名为text.txt
var_dump(rename('text.txt','text/txt.txt')); //通过第二个参数新文件名的路径不同,实现了剪切操作
var_dump(copy('txt.txt','text/txt.txt')); //向其他文件夹进行拷贝操作
var_dump(copy(' // 拷贝远程文件,需要开启php.ini文件的allow_url_fopen = On四.文件内容相关函数
1.fopen() 打开文件 返回一个资源类型 第二个参数 : r 只读模式 r+读写模式 在文档开头写入替换之前存在的数据 w只写模式 如果文件不存在则会自动创建,如果存在则会清空文件内容再写入 w+ 读写模式 a只写模式 在文档尾部写入 a+ 读写模式 b:支持二进制格式文件
2.fread() 可以读取文件的内容 必须传入长度
3.ftell() 获取文件当前指针位置
4.rewind() 将指针重置回开头
5.rclose() 关闭文档
header('content-type:image/jpeg');
$file = fopen('123.jpg','rb');
echo '读取到的内容为:' .fread($file,filesize('text/txt.txt')).'<br>'; //filesize()获取文件字符长度
echo '指针当前所在的位置为:'. ftell($file).'<br>'; //获取当前指针位置
var_dump(rewind($file)); //重置指针位置
echo '指针当前所在的位置为:'. ftell($file).'<br>'; //0
fclose($file); //关闭文档流 无法再继续操作五.文件写入相关函数
fwrite() 写入文件内容 返回写入的字符数量 fputs() 同样 一个中文代表三个字符 第三个参数为限制写入数据的长度
rb+读写模式 写入操作时会覆盖对应字符数量的字符 如果不想覆盖,那么先写入 ''.PHP_EOL 再写入数据
w 读入模式 如果文件不存在则会自动创建,如果存在则会清空文件内容再写入
$file = fopen('text/txt.txt','rb+'); //rb+模式
var_dump(fwrite($file,'网')); //正常覆盖写入
var_dump(fwrite($file,''.PHP_EOL)); //PHP_EOL 换行
var_dump(fwrite($file,'讲师')); //不会覆盖文字
//fputs 和fwirte的功能是一样的
fputs($file,'吴三桂');
fputs($file,'吴三桂',3); //只写入三个字符也就是一个汉字
fclose($file); //关闭文档流
$file = fopen('text2.txt','wb+'); //换wb+模式
//使用w写入内容,如果文件不存在则会自动创建,如果存在则会清空文件内容再写入
var_dump(fwrite($file,'PHP中文网'));
$file = fopen('text2.txt','ab+'); //换ab+模式写入,在末尾写入数据
var_dump(fwrite($file,'PHP中文网'));六.文件读取其他函数
1.fgetc() 从文件中获取一个字符 指针自动下移
2.fgets() 从文件中获取一行字符
3.fgetss() 从文件中获取一行字符,并且过滤掉html字符
4.feof()判断指针是否在最后
5.ftruncate() 截取文件内容为指定长度
echo fgetc($file).'<br>'; //获取一个字符
echo fgets($file).'<br>'; //获取一行字符不过滤html代码
echo fgetss($file).'<br>'; //获取一行字符过滤html代码
while(!feof($file)){ //如果指针不在最后
// echo fgetc($file).'<br>'; //输出一个字符
echo fgets($file).'<br>'; //输出一行字符 不过滤html代码
echo fgetss($file).'<br>'; //输出一行字符 过滤html代码
}
var_dump(ftruncate($file,10)); //将文件截取到1个字符输出七.csv文件操作函数
1.fgetcsv() 读取csv文件内容
2.fputcsv 写入csv文件内容
$file = fopen('text3.csv','rb+');
var_dump(fgetcsv($file)); //输出csv格式文件一行数据
while($row = fgetcsv($file)){ //遍历输出csv文件数据
print_r($row);
}
//写入csv数据(多维数组)
$data = [
[1,'赵云','小生','zhaoyun'],
[2,'马超','锦马超','machao'],
[3,'黄忠','老将','huangzhong'],
];
foreach ($data as $value){ //先遍历为一维数组
fputcsv($file,$value,'~'); //写入csv数据以'~'分割数据
}八.文件内容相关的其他函数
1.file_get_contents 读取一个文件,不需要打开文件直接即可读取
2.file_put_contents 写入一个文件,不需要打开文件直接写入即可 如果写入的文件不存在 则会自动创建文件, 如果存在,则会清空该文件,然后写入 返回写入的字符长度
3.strip_tags() 去除html标记
4.如果我们存入数组或对象必须要将他们进行数据的转换
* 1. 使用序列化来转换 serialize()序列化 unserialize() 反序列化
* 2.使用json来进行转换 json_decode()将json格式的数据转换为之前的格式 json_encode() 将数据转为json格式
echo strip_tags(file_get_contents('text.txt')); //获取去除html标记的内容
echo file_get_contents('http://www.baidu.com'); //获取远程文件内容
echo file_get_contents('http://www.baidu.com/img/bd_logo.png'); //获取远程图片 需要改头部声明!!!
echo file_get_contents('123.jpg'); //获取本地图片 需要改头部声明!!!
echo file_get_contents('text3.csv'); //获取本地csv格式文件 输出字符串
$str = file_get_contents('text4.txt');
echo file_put_contents('text4.txt','PHP中文网学PHP真的很强大!');
echo file_put_contents('text4.txt',"$str.添加了!!!!"); //不覆盖写入 ,其实也覆盖了 只是把原来的又写一遍
写入数组,或者对象
$data = [
'name'=>'吴三桂',
'age'=>28
];
var_dump(file_put_contents('text4.txt',serialize($data))); //写入序列化格式
var_dump(unserialize(file_get_contents('text4.txt'))); //将将序列化格式数据转会数组读取
var_dump(file_put_contents('text4.txt',json_encode($data))); //写入json格式数据
var_dump(json_decode(file_get_contents('text4.txt'))); //将json格式转化回原来格式读取文件相关函数总体上来说都不难,就是比较多 需要加强记忆
批改老师:韦小宝批改时间:2018-11-30 09:10:19
老师总结:是的,PHP文件相关的函数常用的并不多!但是还是需要多多练习来加强记忆哦!