一、文件基础操作
1)打开文件
在PHP中,我们可以使用fopen()函数来打开一个文件,该函接收连个参数:文件名和打开模式
打开模式可以是"r" (只读模式)、“w” (写入模式) “a”(追加模式)等。
fopen函数的格式
fopen("文件名","打开模式")
下面是一个打开文件的示例:
$file= fopen("example.txt", "r");
在上面的示例中,我们打开了一个名为"example.txt"的文件,并指定了只读模式。
打开文件案例
<?
header("content-type:text/html; charset=utf-8");
$file = "a111.txt";
// fopen()打开文件的时候,如果打开成功,则返回真,如果打开失败,则返回假
// 在函数前面加上@可以屏蔽掉函数的报错和警告输出
$fileObj = @fopen($file, "r");
if($fileObj)
{
echo "打开文件成功<br>";
}
else
{
echo "打开文件失败<br>";
exit();
}
?>
2)读取文件
逐行读取文件
fgets() 函数用于从文件中逐行读取文件。
注释:在调用该函数之后,文件指针会移动到下一行。
实例:下面的实例逐行读取文件,直到文件末尾为止:
<?
header("content-type:text/html; charset=utf-8");
// 定义文件名
$file = "a.txt";
// 打开文件
$fileObj = @fopen($file, "r");
// 判断文件是否打开成功
if($fileObj)
{
echo "打开文件成功<br>";
}
else
{
echo "打开文件失败<br>";
exit();
}
// 从文件中读取内容
while(!feof($fileObj)) # feof() 判断指针是否指向文件的末尾,如果是的话,则为真
{
// fgets() 执行一次,就会从打开的文件中读取一行
// 读取了一行一行,指针就会向后移动一行
$content = fgets($fileObj);
// 输出读取的这行的内容
echo "$content <br>";
echo "<hr>";
}
fclose($fileObj);
?>
feof() 函数检查是否已到达文件末尾(EOF)。
如果出错或者文件指针到了文件末尾(EOF)则返回 TRUE,否则返回 FALSE。
逐字符读取文件
fgetc() 函数用于从文件中逐字符地读取文件。
注释:在调用该函数之后,文件指针会移动到下一个字符。
实例:下面的实例逐字符地读取文件,直到文件末尾为止:
<?
header("content-type:text/html; charset=utf-8");
// 定义文件名
$file = "a.txt";
// 打开文件
$fileObj = @fopen($file, "r");
// 判断文件是否打开成功
if($fileObj)
{
echo "打开文件成功<br>";
}
else
{
echo "打开文件失败<br>";
exit();
}
// 从文件中读取内容
while(!feof($fileObj)) # feof() 判断指针是否指向文件的末尾,如果是的话,则为真
{
// fgets() 执行一次,就会从打开的文件中读取一个字符
// 读取了一个字符,指针就会向后移动一位
// 英文字母和数字,一个字符就是一个,但是一个汉字,占用2-6个字符,具体要看编码类型
$content1 = fgetc($fileObj);
$content2 = fgetc($fileObj);
$content3 = fgetc($fileObj);
$content4 = fgetc($fileObj);
// 输出读取的这行的内容
echo "$content1";
echo "$content2";
echo "$content3";
echo "$content4";
echo "<hr>";
}
fclose($fileObj);
?>
读取全部内容:fread
<?php
header("content-type:text/html; charset=utf-8");
// 定义文件名
$file = "a.txt";
// 打开文件
$fileObj = @fopen($file, "r");
// 判断文件是否打开成功
if ($fileObj) {
echo "打开文件成功<br>";
} else {
echo "打开文件失败<br>";
exit();
}
$content = fread($fileObj, filesize("a.txt"));
fclose($fileObj);
echo $content
?>
fread函数
fread() 函数读取打开的文件。
函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。
该函数返回读取的字符串,如果失败则返回 FALSE。
string fread ( resource $handle , int $length )
filesize函数
filesize() 函数返回指定文件的大小。
如果成功,该函数返回文件大小的字节数。如果失败,则返回 FALSE。
3)导入文件
与读取文件类似,我们可以使用fwrite()函数来向文件中写入内容。下面是一个写入文件的示例:
<?
header("content-type:text/html; charset=utf-8");
// 定义文件名
$file = "a.txt";
// 打开文件
$fileObj = @fopen($file, "r");
// 判断文件是否打开成功
if($fileObj)
{
echo "打开文件成功<br>";
}
else
{
echo "打开文件失败<br>";
exit();
}
// fwrite()向文件写入内容的时候,则返回的是写入到文件的字符个数
// php中,数字0表示假,非0表示真,因此可以基于这个特性来判断写入操作是否成功
$res = fwrite($fileObj, "a");
echo "写入到文件中 $res 个字符";
?>
在上面的示例中,我们首先以写入模式打开一个文件,然后使用fwrite()函数将字符串"Hello, World!"写入文件中。最后,我们使用fclose()函数关闭文件。
4)修改文件
如果需要修改文件中的内容,我们可以先将文件内容读取到一个字符串中,然后对字符串进行修改,最 后再将修改后的内容写入文件中。下面是一个修改文件的示例:
<?php
header("Content-Type:text/html; charset=utf-8");
// 打开读取文件内容
$file=fopen("a.txt", "r");
$content= fread($file, filesize("a.txt"));
fclose($file);
echo "1: 读取文件完成....<br>";
// 对内容进行字符串替换
$content= str_replace("大力", "张美丽", $content);
echo "2: 替换内容完成....<br>";
// 将替换后的字符串再次写入到源文件中
$file= fopen("a.txt", "w");
fwrite($file, $content);
fclose($file);
echo "3: 重新写入完成....<br>";
?>
5)删除文件
要删除一个文件,可以使用PHP的unlink()函数。以下是一个简单的示例代码:
if (unlink("example.txt")) {
echo "文件已删除";
} else {
echo "无法删除文件";
}
6)关闭文件
fclose() 函数用于关闭打开的文件:
<?php
$file = fopen("test.txt","r");
//执行一些代码
fclose($file);
?>
补充1:file_exists:文件是否存在
$file = "check.txt";
if(file_exists($file))
{
echo "当前目录中,文件".$file."存在";
}
else
{
echo "当前目录中,文件".$file."不存在";
}
补充2:is_dir:目录是否存在
$dir = "c:/dir1";
if(is_dir($dir))
{
echo "当前目录下,目录".$dir."存在";
}
else
{
echo "当前目录下,目录".$dir."不存在";
}