PHP基础入门(三)
PHP基础入门(三)
[!NOTE]
本篇文章仅用于个人交流与学习,如涉及侵权请联系站长删除!
本篇文章来介绍PHP文件系统操作函数的核心用法的第一部分!
1. 文件路径处理
basename($path, $suffix)
返回路径中的文件名部分,参数
$path
为路径,可以通过参数$suffix
来去掉文件的扩展名。1
2
3
4
5$oneName = basename("/testweb/home.php");
echo $oneName; //输出为 home.php
$twoName = basename("/testweb/home.php", ".php");
echo $twoName; //输出为 home
dirname($path, $levels)
返回路径目录部分,参数
$path
为路径,可以通过参数$levels
指定向上返回的目录层级数。1
2
3
4
5$oneName = dirname("c:/testweb/home.php");
echo $oneName; //输出为 c:/testweb
$twoName = dirname("c:/testweb/home.php", 2);
echo $twoName; //输出为 c:\
pathinfo($path)
返回路径信息数组,包括返回路径(dirname),文件名(basename),后缀名(extension)。
1
2print_r(pathinfo("/testweb/test.txt"))
// 输出为Array ( [dirname] => testweb [basename] => test.txt [extension] => txt [filename] => test )注意:因为这里要输出信息数组,所以要使用
print_r
输出。
2. 文件属性修改
chgrp($file, $group)
修改文件所属组。
1
chgrp("test.txt", "www-data");
chmod($file, $owner)
修改文件权限(8进制模式)。
1
chmod("test.txt", 0664);
注意:这里的权限表示为所有者读写,其他人只读。
chown($file, $owner)
修改文件所有者。
1
chown("test.txt", "gsy");
touch($file, $time)
修改访问/修改时间(默认为当前时间)。
1
touch("test.txt");
注意:文件存在则更新时间,文件不存在则创建。
3.文件读写操作
fopen($file, $mode)
打开文件,参数
$mode
则是以什么样的模式打开文件。模式 说明 r
只读方式打开,将文件指针指向文件头。 r+
读写方式打开,将文件指针指向文件头。 w
写入方式打开,将文件指针指向文件头并将文件大小截为0,如果文件不存在则尝试创建。 w+
读写方式打开,将文件指针指向文件头并将文件大小截为0,如果文件不存在则尝试创建。 a
写入方式打开,将文件指针指向文件尾,如果文件不存在则尝试创建。 a+
读写方式打开,将文件指针指向文件尾,如果文件不存在则尝试创建。 x
创建并以写入方式打开,将文件指针指向文件头。如果文件已经存在,则 fopen()
调用失败并返回FALSE
,并生成一条 E_WARNING 级别的报错信息。如果文件不存在则尝试创建。1
2
3$fopen = fopen('G:/phpCode/test.txt', "r"); // 以只读模式打开文件
var_dump($fopen);// 使用var_dump()操作一下$fopen看看效果,查看输出结果,提示resource注意:
fopen()
函数返回的仅仅一个指向文件的资源句柄,而非内容本身。
fwrite($handle, $data)
和fread($handle, $length)
fwrite($handle, $data)
函数用于写入数据。$handle
参数代表文件对象,而$data
参数代表的是需要写入的数据,它的返回值是输入值字节数,并且如果需要写入的文档中已经有内容了,fwrite()
函数会覆盖这些内容。1
2
3
4
5
6$fopen = fopen('G:/phpCode/test.txt', "w"); // 以写入的方式打开文件。
$fwrite = fwrite($fopen, "fwrite()函数使用测试"); // 调用函数fwrite()并将它赋值给变量 $fwrite。
fclose($fopen); // 关闭文件
print $fwrite; // 打印$fwrite变量 输出为26fread($handle, $length)
返回所读取的字符串,如果出错返回FALSE
。$handle
参数代表的是需要读取的文件对象,$length
参数代表的是需要读取的字节长度。
1
2
3
4
5
6
7$handle = fopen('G:/phpCode/test.txt', "r"); // 用读的方式打开文件
$str = fread($handle, 100); // 用$str变量接受fread函数返回的字符串
fclose($handle);
print $str; // 打印字符串file_get_contents($file)
和file_put_contents($file, $data)
file_get_contents($file)
可以读取整个文件到字符串,它返回的值是字符串。1
echo file_get_contents('G:/phpCode/test.txt'); // 输出文件中内容
file_put_contents($file, $data)
可以写入字符串到文件。1
2
3// 这里的test.txt文件中的内容为123
$str = file_put_contents('G:/phpCode/test.txt', "hello");
echo $str; // 输出的内容为5注意:
file_put_contents($file, $data)
函数执行两个操作:- 覆盖写入文件,原本的txt文件中的内容
'123'
被替换为hello
。 - 返回写入的字节数。
- 覆盖写入文件,原本的txt文件中的内容
file($file)
file($file)
函数可以读取整个函数到数组。1
2
3
4
5
6
7
8
9
10/*原本txt文档中的内容为:
abc
def
ghi
jkl
mno
*/
print_r(file('G:/phpCode/test.txt'));
// 输出的结果为:Array ( [0] => abc [1] => def [2] => ghi [3] => jkl [4] => mno )
fgets($handle)
和fgetc($handle)
fgets($handle)
用来逐行读取文件内容。1
2
3
4
5// 首先用 fopen() 打开文件
$file = fopen('G:/phpCode/test.txt', 'r');
$line = fgets($file);
echo $line; // 输出第一行内容fgetc($handle)
用来逐字读取文件内容。1
2
3
4
5// 首先用 fopen() 打开文件
$file = fopen('G:/phpCode/test.txt', 'r');
$line = fgetc($file);
echo $line; // 输出第一个单字符
注意事项
在文件读写操作所提到的这些函数中,有一个需要注意的地方是像:
fwrite($handle, $data)
、fread($handle, $length)
、fread($handle, $length)
、fgets($handle)
、fgetc($handle)
这样的函数,它们的参数使用的是文件资源(资源句柄$handle
),所以在调用时,我们首先应该通过fopen()
函数获得这样的资源句柄,才能保证顺利运行。
4. 文件缓存状态
clearstatcache()
清除文件缓存状态(修改后需要调用)。
1
2
3
4
5
6
7
8
9
10
11
12// 假设原来txt文件里的内容为123
$file = 'G:/phpCode/test.txt';
echo "初始大小:" . filesize($file) . "字节<br>"; // 初始大小输出为3。
file_put_contents($file, "添加一些内容"); // 通过函数修改txt文件中的内容。
echo "不清理缓存:" . filesize(file) . "字节<br>"; // 没有调用clearstatcahe()函数时 继续输出3
clearstatcache();
echo "清理缓存后" . filesize($file) . "字节<br>" // 清理缓存后输出的值为18
filesize($file)
和filetype($file)
filesize($file)
函数用来获取文件大小,并返回一个以字节为单位的大小数值,在刚刚的例子里也有体现。filetype($file)
函数可以获取并返回文件类型,但是它返回的是文件在操作系统中的基本类型(也称为文件模式、文件种类),而不是后最格式或文件格式。1
2
3$file = 'G:/phpCode/test.txt';
echo filetype($file); // 输出的结果为file
file_exists($file)
、is_file($file)
和is_dir($file)
file_exists($file)
函数用来查找检查文件或者目录是否存在。若存在则返回TRUE
,若不存在则返回FALSE
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16$file = 'G:\phpCode\test.txt'; // 此文件存在
$iiii = 'G:\phpCode\abc.txt'; // 此文件不存在
if (file_exists($file)) {
echo "文件存在";
} else {
echo "文件不存在";
}
// 输出为文件存在
if (file_exists($iiii)) {
echo "文件存在";
} else {
echo "文件不存在";
}
// 输出为文件不存在is_file($file)
函数用来检查是否为文件。1
is_file("test.txt");
is_dir($file)
函数用用户来稽查是否为目录。1
is_dir("test");