您的位置:首页 > 编程语言 > PHP开发

php笔记(5)——文件操作

2016-05-29 13:51 309 查看
读取文件内容

判断文件是否存在

写入内容到文件

文件修改时间

文件大小

删除文件

读取文件内容

file_get_contents,可以将整个文件全部读取到一个字符串中

$content = file_get_contents('./test.txt');


file_get_contents也可以通过参数控制读取内容的开始点以及长度。

$content = file_get_contents('./test.txt', null, null, 100, 500);


PHP也提供类似于C语言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。

$fp = fopen('./text.txt', 'rb');
while(!feof($fp)) {
echo fgets($fp); //读取一行
}
fclose($fp);


$fp = fopen('./text.txt', 'rb');
$contents = '';
while(!feof($fp)) {
$contents .= fread($fp, 4096); //一次读取4096个字符
}
fclose($fp);


判断文件是否存在

file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在

is_file是确切的判断给定的路径是否是一个文件

is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写

$filename = './test.txt';
if (is_file($filename)) {
echo file_get_contents($filename);
}


$filename = './test.txt';
if (is_writeable($filename)) {
file_put_contents($filename, 'test');
}
if (is_readable($filename)) {
echo file_get_contents($filename);
}


写入内容到文件

$filename = './test.txt';
$data = 'test';
file_put_contents($filename, $data);


$data
是数组时,会自动的将数组连接起来,相当于
$data=implode('', $data);


或使用fwrite写入

$fp = fopen('./test.txt', 'w');
fwrite($fp, 'hello');
fwrite($fp, 'world');
fclose($fp);


文件修改时间

文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

方法作用
fileowner获得文件的所有者
filectime获取文件的创建时间
filemtime获取文件的修改时间
fileatime获取文件的访问时间
其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。

$mtime = filemtime($filename);
echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));


文件大小

filesize

$filename = '/data/webroot/usercode/code/resource/test.txt';
$size = filesize($filename);


如果要转换文件大小的单位,可以自己定义函数来实现。

function getsize($size, $format = 'kb') {
$p = 0;
if ($format == 'kb') {
$p = 1;
} elseif ($format == 'mb') {
$p = 2;
} elseif ($format == 'gb') {
$p = 3;
}
$size /= pow(1024, $p);
return number_format($size, 3);
}

$filename = '/data/webroot/usercode/code/resource/test.txt'; $size = filesize($filename);

$size = getsize($size, 'kb'); //进行单位转换
echo $size.'kb';


删除文件

跟Unix系统命令类似,PHP使用unlink函数进行文件删除。

unlink($filename);


删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。

rmdir($dir);


如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。

foreach (glob("*") as $filename) {
unlink($filename);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php