第六章 目录与文件
basename — 返回路径中的文件名部分
dirname — 返回路径中的目录部分
pathinfo — 返回文件路径的信息
realpath — 返回规范化的绝对路径名
Output:
D:\AppServ\www\Basic6
basename : demo1.php
dirname : D:\AppServ\www\Basic6
extension : php
filename : demo1
二.磁盘、目录和文件计数
1.查看文件大小和磁盘空间
filesize — 取得文件大小
disk_free_space — 返回目录中的可用空间
disk_total_space — 返回一个目录的磁盘总大小
<?php
$path ='demo2.php';
$path = realpath($path);
$drive = 'c:';
echo round(filesize($path)/1024,2).'kb'.'<br/>';
echo round(disk_free_space($drive)/1024/1024/1024,2).'GB'.'<br/>';
echo round(disk_total_space($drive)/1024/1024/1024,2).'GB'.'<br/>';
?>
output
0.26kb
10.61GB
30.01GB
2.获得文件的各种时间
fileatime — 取得文件的上次访问时间
filectime — 取得文件的 inode 修改时间
filemtime — 取得文件修改时间
<?php
$file = realpath ( '../Basic5/demo3.php' );
$date_format = 'Y-m-d h:i:s';
echo 'lastest accessing time : '.date ( $date_format, fileatime ( $file ) ) . '<br>';
echo 'lastest change time : '.date ( $date_format, filectime ( $file ) ) . '<br>';
echo 'lastest modify time : '.date ( $date_format, filemtime ( $file ) ) . '<br>';
?>
output
lastest accessing time : 2011-12-18 04:26:49
lastest change time : 2011-12-18 04:26:49
lastest modify time : 2011-12-18 04:29:15
三.文件处理
文件读写的两种方式:
1.php所有版本都支持的方法:
fopen — 打开文件或者 URL
fclose — 关闭一个已打开的文件指针
fwrite — 写入文件(可安全用于二进制文件)
表 1. fopen() 中 mode的可能值列表
<?php
$fp = fopen('file1.txt','w');
$outStr = "my name is anllin,\r\nmy age is 29.";
fwrite($fp,$outStr,strlen($outStr));
fclose($fp);
?>
my name is anllin,
my age is 29.
2.php5新加入的方法
file_put_contents — 将一个字符串写入文件
<?php
file_put_contents('file2.txt',"my name is anllin,\r\nmy age is 29.");
?>
output
my name is anllin,
my age is 29.
读出文件内容的方法:
示例文件file1.txt的内容如下:
my name is anllin,
my age is 29.
fgetc — 从文件指针中读取字符
Demo.php
<?php
$fp = fopen('file1.txt','r');
echo fgetc($fp);
echo fgetc($fp);
fclose($fp);
?>
Output:
my
fgets — 从文件指针中读取一行
<?php
$fp = fopen('file1.txt','r');
echo fgets($fp);
echo fgets($fp);
fclose($fp);
?>
output
my name is anllin, my age is 29.
fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
Output
my name is anllin
fread — 读取文件(可安全用于二进制文件)
<?php
$filename = 'file1.txt';
$fp = fopen($filename,'r');
$contents = fread($fp,filesize($filename));
echo $contents;
fclose($fp);
?>
Output
fpassthru — 输出文件指针处的所有剩余数据
<?php
$filename = 'file1.txt';
$leftSize = fpassthru($fp);
echo $leftSize;
fclose($fp);
?>
output
my name is anllin, my age is 29. 33
file — 把整个文件读入一个数组中
<?php
$lines = file('file1.txt');
foreach ($lines as $line_num => $line)
{
echo $line_num.' : '.$line.'<br>';
}
?>
output
0 : my name is anllin,
1 : my age is 29.
readfile — 输出一个文件
<?php
$size = readfile('file1.txt');
echo $size;
?>
output
my name is anllin, my age is 29.33
file_get_contents — 将整个文件读入一个字符串(php5.0新增)
<?php
$contents = file_get_contents('file1.txt');
echo $contents;
?>
output
my name is anllin, my age is 29.
feof — 测试文件指针是否到了文件结束的位置
<?php
$fp = fopen('file1.txt','r');
while(!feof($fp))
{
echo fgetc($fp);
}
fclose($fp);
?>
my name is anllin, my age is 29.
file_exists — 检查文件或目录是否存在
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<?php
$filename = 'file1.txt';
if(file_exists($filename))
{
echo '执行文件读写操作';
}
else
{
echo '你要找的文件不存在';
}
?>
output
filesize — 取得文件大小
<?php
$file_size = filesize('file1.txt');
echo $file_size;
?>
output
33
unlink — 删除文件
<?php
$isDeleted = unlink('file3.txt');
echo $isDeleted;
?>
output
1
rewind — 倒回文件指针的位置
ftell — 返回文件指针读/写的位置
fseek — 在文件指针中定位
<?php
$fp = fopen ( 'file1.txt', 'r' );
fgetc ( $fp );
fgetc ( $fp );
echo ftell ( $fp ) . '<br>';
rewind ( $fp );
echo ftell ( $fp ) . '<br>';
fgetc ( $fp );
fgetc ( $fp );
echo ftell ( $fp ) . '<br>';
fseek($fp,0);//same as rewind ($fp)
?>
output
Flock的操作值
flock — 轻便的咨询文件锁定
<?php
$filename = 'file1.txt';
$fp = fopen($filename,'rb');
flock($fp,LOCK_EX);//locked
$contents = fread($fp,filesize($filename));
flock($fp,LOCK_UN);//unlocked
echo $contents;
fclose($fp);
?>
output
my name is anllin, my age is 29.
目录句柄操作
opendir — 打开目录句柄
readdir — 从目录句柄中读取条目
closedir — 关闭目录句柄
<?php
$dir= opendir('../Basic6');
while(!!$file = readdir($dir))
{
echo $file.'<br/>';
}
closedir($dir);
?>
output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
scandir — 列出指定路径中的文件和目录
<?php
$files = scandir('../Basic6');
foreach($files as $file)
{
echo $file.'<br>';
}
?>
output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo21.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
rename — 重命名一个文件或目录
<?php
rename('demo1.php','demo01.php');
if(file_exists('demo01.php'))
{
echo 'file rename success';
}
else
{
echo 'file rename fail';
}
?>
output
file rename success
rmdir — 删除目录