文件读写
1、读取文件
file_get_contents():将文件中的内容读取到一个字符串中
file_get_contents($filename,$use_include_path,$context,$offset,$maxlen);
$filename:指定要读取的文件路径;其他参数为可选参数
$use_include_path,若想在php.ini中配置的 include_path路径中搜寻文件,可以将该参数设置1;
$context,用于资源流上下文操作
$offset,用于指定在文件中开始读取的位置,默认从文件头开始
$maxlen,用于指定读取的最大字节数,默认为整个文件的大小
除了文本文件,file_get_contents()还可以读取图片等其他类型的文件
header('Content-type:image/jpeg');
var_dump(file_get_contents('.\img\123.jpg'));
通过header函数告知浏览器图片的类型,需要注意的是,整个脚本中不能有其他的输出内容,并且这个文件必须是一个正确的图片文件
2、按行读取文件
file()函数可以将整个文件读入到数组中。如果执行成功返回一个数组,数组中的每个元素都是文件中的一行,包括换行符在内。如果执行失败,则返回false
file($filename,$flogs)
$filename指定读取的文件路径;
$flogs可选参数,指定读取方式的选项,具体如下:
FILE_USE_INCLUDE_PATH:在include_path中查找文件
FILE_IGNORE_NEW_LINES:指定返回值数组的每个元素值末尾不添加换行符
FILE_SKIP_EMPTY_LINES:跳过空行
实列:
$arr=file('./new_file.txt');
foreach($arr as $index=>$val){
print_r($index.": ".$val.'<br />');
}
3、写入文件
file_put_contents()
file_put_contents($filename, $data,$flags)
$filename指定读取的文件路径;$data指定要写入的内容;$flags指定要写入的形式,如:FILE_USE_INCLUDE_PATH:在include_path中查找文件;FILE_APPEND表示追加写入。函数执行成功返回写入到文件内数据的字节数,失败返回false
**注意:**在php脚本中书写中文字符时,字符串的编码取决与php脚本文件所使用的编码,为了更好地处理字符编码,php提供了iconv()函数用于编码转换
//在utf-8编码的php脚本中书写的字符串是utf-8编码
$data="测试";
//将utf-8编码转换为gbk编码,保存到文件中
$data=iconv('UTF-8', 'GBK', $data);
file_put_contents('./new_file.txt', $data);
//输出文件,并告知浏览器使用gbk编码显示
header('Content-type:text/html;charset=GBK'); //charset不要写错
echo file_get_contents('./new_file.txt');
4、读取远程文件
file_get_contents()和file()除了可以读取本地文件,还可以读取远程文件。在使用前,应确保php.ini中的allow_url_fopen配置处于开启状态,否则不允许远程请求
文件常用操作
1、文件重命名和移动文件
rename()函数用于实现文件的重命名或移动文件
rename($oldname, $newname)
$oldname表示原文件路径,$newname表示目标路径。如果两个路径在同一个目录下是重命名操作,否则执行移动操作。
==注:==若目标路径是已经存在的文件,会自动覆盖。另外,若rename()函数的第一个参数是目录,则可以对目录进行重命名或移动的操作。若目标路径已经存在,或目标路径的上级目录不存在时,会失败
2、文件复制
copy($source, $dest)
$source表示原文件路径,$dest表示目标路径。当文件复制成功时返回true,失败时返回false
3、文件删除
unlink($filename)
$filename指定读取的文件路径,如果成功返回true,否则返回false。如果文件不存在,则会提示warning
4、判断文件是否存在
file_exists($filename) //判断指定文件或目录是否存在
is_file($filename) //判断指定文件是否存在
is_dir($filename) //判断指定目录是否存在
文件类型和属性
1、获取文件类型
filetype($filename)
2、获取文件属性
函数 | 功能 |
---|---|
filesize($filename) | 获取文件大小 |
filectime($filename) | 获取文件的创建时间 |
fileatime($filename) | 获取文件的上一次访问时间 |
filemtime($filename) | 获取文件的修改时间 |
is_readable($filename) | 判断文件是否可读 |
is_writable($filename) | 判断文件是否可写 |
is_executable($filename) | 判断文件是否可执行 |
目录操作
1、创建目录
mkdir()
mkdir($pathname,$mode,$recursive)
mkdir('./img/a/b',077,TRUE);
$pathname,指定要创建的目录;$mode指定目录的访问权限(用于Linux环境),默认为077;$recursive指定是否递归创建目录,默认为false。该函数执行成功返回true,失败返回false
$mode,$recursive均为可选参数,如果要递归创建$mode参数不能缺少
2、删除目录
rmdir()函数用于删除目录,成功返回true,失败返回false
rmdir($dirname)
$dirname,指定要删除的目录名,对于非空目录会删除失败
3、遍历目录
glob()函数用于寻找与模式匹配的文件路径,也可以用于遍历目录。函数的返回值是查找后的文件列表数组
例:
header('Content-type:text/html;charset=GBK');
var_dump(glob('./*')); //获取当前目录下的文件列表
var_dump(glob('./*.html')); //获取当前目录下所用的html扩展名的文件
注:需要设置字符格式(因为中文名可能会出现乱码)
4、查看磁盘大小和可用空间
disk_free_space($directory) //可用空间
disk_total_space($directory) //总空间
disk_free_space('D:')
$directory:磁盘;这两个函数只对磁盘根目录起作用
解析路径
1、返回路径中的文件名
basename($path,$suffix)
$path指定的路径名,$suffix可选参数,如果指定了该参数且文件名使用该参数结尾的,则返回结果中会去掉这一部分字符
2返回路径中的目录部分、
dirname($path,$leves)
$leves可选参数,表示上移目录的层数,注该参数是php7中的参数,若低于该版本将不能使用该参数
$path="c:/a/b/c/d/e.txt";
print_r(dirname($path)); //结果:c:/a/b/c/d
print_r(dirname($path,2)); //结果:c:/a/b/c
3、pathinfo($path)
用于以数组形式返回路径中的信息,包括目录名、文件名和扩展名等
$path="c:/a/b/c/d/e.txt";
var_dump(pathinfo($path));
echo pathinfo($path)['basename'];