文件操作相关函数

原创 2018-11-30 14:57:14 274
摘要://文件信息相关函数 $filename = __DIR__.'/homepage.php'; //filetype(文件的路径)   获取文件类型 echo filetype($filename),'<br>'; //filesize(文件的路径)   获取文件大
//文件信息相关函数
$filename = __DIR__.'/homepage.php';
//filetype(文件的路径)   获取文件类型
echo filetype($filename),'<br>';
//filesize(文件的路径)   获取文件大小
echo filesize($filename),'<br>';
//filectime(文件的路径)   获取文件创建时间
echo date('Y-m-d H:i:s',filectime($filename)),'<br>';
//filemtime(文件的路径)   获取文件修改时间
echo date('Y-m-d H:i:s',filemtime($filename)),'<br>';
//fileatime(文件的路径)   获取文件最后访问时间
echo date('Y-m-d H:i:s',fileatime($filename)),'<br>';
//is_readable(文件的路径)   检查文件的可读性,指定的文件或目录存在并且可读,则返回true,否则返回false
var_dump( is_readable($filename));echo'<br>';
//is_writable(文件的路径)   检查文件的可写性,指定的文件或目录存在并且可写,则返回true,否则返回false
var_dump( is_writable($filename));echo'<br>';
//is_executable(文件的路径)   检查文件的可执行性,指定的文件或目录存在并且可执行,则返回true,否则返回false
var_dump( is_executable($filename));echo'<br>';





//文件路径相关函数
//pathinfo(要解析的路径,指定返回值)    返回文件路径信息
$filename = __DIR__.'/homepage.php';
var_dump(pathinfo($filename));echo '<br>';
//获取文件目录
echo '文件目录:' . pathinfo($filename,PATHINFO_DIRNAME);echo '<br>';
echo '文件目录:',dirname($filename),'<br>';
//获取文件名
echo '文件名:' . pathinfo($filename,PATHINFO_BASENAME);echo '<br>';
echo '文件名:',basename($filename),'<br>';
//获取文件后缀名
echo '文件后缀名:' . pathinfo($filename,PATHINFO_EXTENSION);echo '<br>';
//获取没有后缀名的文件名
echo '没有后缀名的文件名:' . pathinfo($filename,PATHINFO_FILENAME);echo '<br>';
//检查目录或文件是否存在
var_dump(file_exists($filename));echo '<br>';





//文件操作相关函数
$filename = __DIR__ . '/text.php';
$filename2 = __DIR__ . '/text2.php';
$filename3 = __DIR__ . '/../text.php';
//touch()   设定文件的访问和修改时间
var_dump(touch($filename));echo '<br>';
//unlink()  删除文件
var_dump(unlink($filename));echo '<br>';
//rename(原文件名,新文件名)  修改文件名
var_dump(rename($filename,$filename2));echo '<br>';
//利用rename(原路径,目的路径)修改文件名完成剪切操作
var_dump(rename($filename2,$filename3));echo '<br>';
//copy(原路径,目的路径)    复制文件(本地文件和远程文件都可以复制)
var_dump(copy($filename3,$filename));echo '<br>';
//复制远程文件(需要设置php.ini文件中的allow_url_fopen = on)
var_dump(copy('http://www.php.cn/',$filename));echo '<br>';





//文件内容相关函数
//读取图片:指定编码格式
header('content-type:image/jpeg');
$file_name = __DIR__.'/001.jpg';
//fopen() 打开文件,rb值对二进制文件进行操作
$file = fopen($file_name,'rb');
//fread(文件路径,要读取的大小)   读取文件内容
echo '内容:',fread($file,filesize($file_name)),'<br>';


$filename = __DIR__.'/../text.php';
//fopen() 打开文件
$file = fopen($filename,'rb');
//fread(文件路径,要读取的大小)   读取文件内容
echo '内容:',fread($file,filesize($filename)),'<br>';
//ftell()   获取文件当前指针所在位置
echo '当前指针位置:', ftell($file),'<br>';
//rewind()    指针回到起始位置
var_dump(rewind($file));echo '<br>';
echo '当前指针位置:', ftell($file),'<br>';
//fclose()  关闭文件,文件流关闭之后是不可以对文件进行操作
fclose($file);





//文件写入相关函数
/**
 * 一、r 只读方式打开文件,将文件指针指向文件头;
 * r+ 读写方式打开文件,将文件指针指向文件头;
 */
$filename = __DIR__.'/../text.php';
$file = fopen($filename,'rb+');//b表示可以读取二进制文件
//fwrite()/fputs()  写入文件内容,写入操作时,会覆盖对应字符数量的字符
var_dump(fwrite($file,'php中文网'));
//var_dump(fwrite($file,'html'));
var_dump(fwrite($file,'' . PHP_EOL));//写入\n
var_dump(fwrite($file,'中文网',3));
/**
 * 二、w 写入方式打开文件,将文件指针指向文件头并将文件大小截为0,如果文件不存在则创建(写入方式操作文件,不能对文件进行读取操作)
 * w+ 读写方式打开文件,将文件指针指向文件头并将文件大小截为0,如果文件不存在则创建(读写方式操作文件,可以对文件进行读取操作)
 */
$filename = __DIR__.'/../text.php';
$file = fopen($filename,'wb+');
//以w方式写入内容,如果文件不存在,则会创建文件并写入内容;如果文件存在,则会清空文件原有内容,写入新内容
var_dump(fputs($file,'php中文网'));
/**
 * 三、a 写入方式打开文件,将文件指针指向文件末尾,如果文件不存在则创建
 * a+ 读写方式打开文件,将文件指针指向文件末尾,如果文件不存在则创建
 */
$filename = __DIR__.'/../text.php';
$file = fopen($filename,'ab');
//以w方式写入内容,如果文件不存在,则会创建文件并写入内容;如果文件存在,则会清空文件原有内容,写入新内容
var_dump(fputs($file,'+++++php中文网'));
echo ftell($file);//此时指针的位置指的是在写入内容中所在的位置,而不是整个文件中所在的位置。比如上面写入的内容的长度是17,那么此时指针的位置为17,即在写入完内容后,文件的末尾





//文件读取其他函数
$filename = __DIR__.'/../text.php';
$file = fopen($filename,'rb+');
//fgetc()   从文件指针中读取字符(从文件句柄中读取一个字符)
echo fgetc($file),'<br>';
//fgets()   从文件指针中读取一行字符
echo fgets($file),'<br>';
//fgetss()   从文件指针中读取一行字符并过滤html标记
echo fgetss($file),'<br>';
//获取整个文件内容
rewind($file);//指针复位
//feof()文件指针是否到达末尾,如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE。
while (!feof($file)){
    echo fgetc($file);
//    echo fgets($file);
//    echo fgetss($file);
}
//ftruncate()   将文件截断到给定长度
var_dump(ftruncate($file,10));





//csv格式文件相关函数
$filename = __DIR__.'/../text2.php';
$file = fopen($filename,'rb+');
//fgetcsv(文件指针,长度,设置阻断分界符) 从文件指针中读入一行并解析为csv字段(分界符必须是英文字符,文件中默认的逗号也应该是英文字符)
echo '<pre>';
var_dump(fgetcsv($file));
while ($row = fgetcsv($file,16,'+')){
    print_r($row);
}
//fputcsv() 写入csv文件内容
$arr = [
    [1,'html','dreamweaver'],
    [2,'php','phpstudy'],
    [3,'java','eclipse'],
];
foreach ($arr as $item){
    fputcsv($file,$item,'+');
}





//文件内容相关函数
$filename = __DIR__.'/../text2.php';
//1、file_get_contents() 直接读取文件(可以读取本地和远程文件和图片)
echo file_get_contents($filename),'<br>';
//strip_tags()  去除html标记
echo strip_tags(file_get_contents($filename)),'<br>';
//2、file_put_contents() 直接写入文件,如果文件不存在,则会创建;如果文件存在,则会清空文件内容,然后写入新内容
var_dump(file_put_contents($filename,'文件内容相关函数'));
//保留原有内容写入
//方法一:
$str = file_get_contents($filename);
file_put_contents($filename,$str . 'file_get_contents() 直接读取文件(可以读取本地和远程文件和图片)');
//方法二:如果要写入对象或数组,要进行数据转换(用序列号或json格式转换)
$data = [
    'name' => '张红',
    'age' => 25,
];
//写入序列化数组
file_put_contents($filename,serialize($data));
/**
 * a:2:{s:4:"name";s:6:"张红";s:3:"age";i:25;}
 * a->array
 * 2->数组元素个数
 * s->string
 * 4->字符串长度
 */
var_dump(unserialize(file_get_contents($filename)));
//写入json格式数组
var_dump(file_put_contents($filename,json_encode($data)));
var_dump(json_decode(file_get_contents($filename)));


批改老师:天蓬老师批改时间:2018-11-30 16:10:13
老师总结:php提供了强大的文件操作功能,是基于C语言语法来实现 , 学习过C的同学,对这些应该不陌生. 但是php又在其基础上,封装了更多的参数,功能也更强大

发布手记

热门词条