目录部分
basename()
函数用于返回有扩展名的文件名,如:
basename($path);
将会返回文件名包含扩展名
dirname()
函数用于返回文件所在路径,如:
dirname($path);
获取路径文件的信息:pathinfo()
,它的类型为数组类型。需要以数组的形式对它进行输出。如:
$path = pathinfo($path);
echo $path;
将会得到一个数组,包含:dirname、basename、extension、filename。若需要分开输出,即如:
$path = pathinfo($path);
echo $path['dirname'];
磁盘、目录和文件计算
计算文件大小
filesize()
可以返回指定文件字节大小。如:
$path = 'c:\AppServ\www\Test\test.php';
echo filesize($path);
如果要计算出是多少KB,那就除以1024:
$path = 'c:\AppServ\www\Test\test.php';
echo filesize($path) / 1024;
由于所得结果小数尾数太长,则可以四舍五入,用round()
函数:
$path = 'c:\AppServ\www\Test\test.php';
echo round(filesize($path) / 1024,2).'KB';
参数2的意思是保留后两位。
计算磁盘的可用空间
disk_free_space()
函数,返回指定目录所在磁盘分区的可用空间。如:
echo disk_free_space('C:');//C盘,默认是字节数显示。
转换之后为:
echo round(disk_free_space('C:')/1024/1024/1024,2).'GB';
即得到结果为GB,注意:除以一次1024是KB,除以两次是MB,三次则是GB。
计算磁盘的总空间
disk_total_space()
函数可以返回指定目录所在磁盘分区的总容量。如:
echo round(disk_total_space('C:')/1024/1024/1024,2).'GB';
获取文件最后访问时间
fileatime()
函数返回文件的最后访问时间。Unix时间戳形式,需要将时间戳翻译成正常日期显示,需要用date()
函数,格式化显示日期,如:
$file = 'c:\AppServ\www\Test\test.php';
date_default_timezone_set('Asia/Shanghai');
echo date("Y-m-d,h:i:s",fileatime($file));
需要注意: 默认date时区并非国内的时区时间,所以需要设置:
date_default_timezone_set('Asia/Shanghai');//设置成国内时间
获取文件最后改变时间(文件所有者权限改变)
filectime()
函数返回文件的最后改变时间,也是unix时间戳。
获取文件最后修改时间(内容改变,一般都是修改时间用的多)
filemtime()
函数返回文件的最后修改时间,也是unix时间戳。
文件部分
将数据写入一个文件,有3个步骤:
1、打开这个文件,如果这个文件不存在,需要创建它;
2、将数据写入这个文件;
3、关闭这个文件。
同理,从一个文件读取数据,也有3个步骤:
1、打开这个文件,如果不能打开,就正确退出;
2、从文件中读出数据;
3、关闭这个文件。
打开文件:fopen()
函数,当打开文件时,还需要指定如何使用它,也就是文件模式。分别有:
模式 | 模式名称 | 意义 |
---|---|---|
r | 只读 | 文件指针置于文件开头 |
r+ | 读写 | 文件指针置于文件开头 |
w | 只写 | 在写入前,删除文件内容,将指针返回到文件开头。如果文件不存在,则尝试创建。 |
w+ | 读写 | 在读取写入前,删除文件内容,将指针返回到文件开头。如果文件不存在,则尝试创建。 |
a | 只写 | 文件指针置于文件末尾。如果文件不存在,则尝试创建。此模式成为追加(append)。 |
a+ | 写读 | 文件指针置于文件末尾。如果文件不存在,则尝试创建。此过程追加到文件。 |
b | 二进制 | 略 |
t | 文本 | 用于与其他模式的结合 |
打开并写入文件演示:
fopen()
一般传两个参数:文件名、文件模式;
fwrite()
为向文件写入数据,传:参数名、内容、长度(可不写,一般使用strlen()
函数计算);
$fp = fopen('file.txt','w');
//向文件里写入一些数据,一般创建变量来进行操作
$outstring = 'test test test';
fwrite($fp,$outstring,strlen($outstring));
//当打开一个文件的时候,习惯性将其关闭。
fclose($fp);
打开文件也可以用新的函数:file_get_contents()
;
而写入文件可以用:file_put_contents()
;如:
file_put_contents('file2.txt','this is test2');
打开并读出文件演示:
$fp = fopen('file.txt','r');
fcloe($fp);
fgetc()
:读出一个字符,并将指针移到下一个字符;
fgets()
:读出一行字符,可以指定一行显示的长度;
fgetss()
:从文件指针中读取一行并过滤掉HTML标记;
fread()
:读取定量的字符;
fpassthru()
:输出文件指针处的所有的所有剩余数据;
file()
:将整个文件读入数组中,以行进行分组;
readfile()
:读入一个文件并写入到输出缓冲;
file_get_contents()
:将整个文件读入一个字符串。不需要额外写关闭
如:
$fp = fopen('file.txt','r');
echo fgetc($fp);
fcloe($fp);
打印全部文件,可以用循环语句while()
,如:
$fp = fopen('file.txt','r');
while(!feof($fp)){
echo fgetc($fp);
}
feof()
判断读完文件。
查看文件是否存在:
用file_exists()
函数检测文件或目录是否存在。
if(file_exists('file.txt')){
///...
}else{
///...
}
查看一个文件的大小:filesize()
;
删除一个文件:unlink()
;
在文件中定位:rewind()
、fseek()
、ftell()
:
rewind()
:可以将文件指针复位到文件的开始;
ftell()
:可以以字节为单位报告文件指针当前在文件中的位置;
fseek()
:可以将文件指针fp从whence位置移动offset字节。
还有个文件用到的函数是锁定:flock()
.