一、文件操作
1.1 文件基础操作
1.1.1 打开文件
在PHP中,我们可以使用fopen()函数来打开一个文件,该函数接收两个参数:
文件名和打开模式。
打开模式可以使"r"(只读模式)、"w"(写入模式)、"a"(追加模式)等。
fopen 函数的格式
fopen("文件名","打开模式")
|----|---------------------------------|
| 模式 | 描述 |
| r | 只读。在文件的开头开始。 |
| r+ | 读/写。在文件的开头开始。 |
| w | 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| w+ | 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| a | 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件 |
| a+ | 读/追加。通过向文件末尾写内容,来保持文件内容。 |
| x | 只写。创建新文件。如果文件已存在,则返回FALSE和一个错误。 |
| x+ | 读/写。创建新文件,如果文件已存在,则返回FALSE和一个错误 |
下面是一个打开文件的实例:
php
$file = fopen("example.txt","r");
打开文件案例:
php
<?php
header("content-type:text/html;charset=utf-8");
$file = "a111.txt";
// fopen()打开文件的时候,如果打开成功,则返回真,如果打开失败,则返回假
// 在函数前面加上@可以屏蔽掉函数的报错和警告输出
$fileObj = @fopen($file,"r");
if($fileObj)
{
echo "打开文件成功<br>";
}
else
{
echo "打开文件失败<br>"
exit();
}
?>
1.1.2 读取文件
逐行读取文件
fgets() 函数用于从文件中逐行读取文件。
注释: 在调用该函数之后,文件指针会移动到下一行。
实例:下面的实例逐行读取文件,直到文件末尾为止;
php<?php header("conteent-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() 函数用于从文件中逐字符地读取文件
**注释:**在调用该函数之后,文件指针会移动到下一个字符。实例:逐字符读取文件,直到文件末尾为止。
php<? 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() 判断指针是否指向文件的末尾,如果是的话,则为真 { // fgetc() 执行一次,就会从打开的文件中读取一个字符 // 读取了一个字符,指针就会向后移动一位 // 英文字母和数字,一个字符就是一个,但是一个汉字,占用2-6个字符,具体要看编码类型 $content1 = fgetc($fileObj); $content2 = fgetc($fileObj); $content3 = fgetc($fileObj); $content4 = fgetc($fileObj); // 输出读取的这行的内容 echo "$content1"; echo "$content2"; echo "$content3"; echo "$content4"; echo "<br>"; } fclose($fileObj); ?>
读取全部内容:fread
php
<?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"));
fcloes($fileObj);
echo $content;
?>
fread函数
- fread() 函数读取打开的文件。
- 函数会到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。
- 该函数返回读取的字符串,如果失败则返回 FALSE
phpstring fread ( resource $handle,int $lenngth)
filesize函数
- filesize() 函数返回指定文件的大小。
- 如果成功,该函数返回文件大小的字节数。如果失败,则返回 FALSE。
1.1.3 写入文件
与读取文件类似,我们可以使用fwrite()函数来向文件中写入内容。下面是一个写入文件的示例:
php
<?php
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,"Hello,World!");
echo "写入到文件中 $res 个字符";
fclose($fileObj);
?>
在上面的案例中,我们首先以写入模式打开一个文件,然后使用fwrite()函数将字符串"Hello,World!"写入到文件中。最后,我们使用close()函数关闭文件
1.1.4 修改文件
如果需要修改文件中的内容,我们可以先将文件内容读取到一个字符串中,然后对字符串进行修改,最后再将修改后的内容写入到文件中,下面是一个修改文件的示例:
php
<?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>";
?>
在上面的示例中,我们先将文件内容读取到$content变量中,然后使用str_replace()函数将字符串"大力"替换为"张美丽"。最后,我们将修改后的内容写入文件中。
1.1.5 删除文件
要删除一个文件,可以使用PHP的unlink()函数,以下是一个简单的示例代码:
php
if(unlink("example.txt")) {
echo "文件已删除";
}
else
{
echo "无法删除文件";
}
在上述代码中,我们使用unlink()函数删除了名为example.txt的文件。如果删除成功,则该函数返回true,否则返回fales。
1.1.6 关闭文件
fclose() 函数用于关闭打开的文件:
php
<?pphp
$file = fopen("text.txt","r");
//执行一些代码
fclose($file);
?>
1.1.7 判断文件是否存在
file_exists()函数用于判断文件是否存在
php
$file = "check.txt";
if(file_exists($file))
{
echo "当前目录中,文件".$file."存在";
}
else
{
echo "当前目录中,文件".$file."不存在";
}
1.1.8 判断目录是否存在
is_dir() 函数用于判断目录是否存在
php
$dir = "c:/dir1";
if(is_dir($dir))
{
echo "当前目录下,目录".$dir."存在";
}
else
{
echo "当前目录下,目录".$dir."不存在";
}
1.2 操作文件的函数
1.2.1 fopen() 函数
fopen() 函数用于在PHP中打开文件,它可以用来读取文件的内容,也可以用来写入文件的内容。下面是一个示例:
php
$file = 'test.txt';
$fp = fopen($file,'r');
while (!feof($fp)){
$content = fgets($fp);
}
fclose($fp);
echo $content;
1.2.2 file_get_contents() 函数
file_get_content()函数用于将整个文件读入到一个字符串中,它是最简单也是最常用的读取文件内容的方法,使用起来也非常方便。下面是一个示例:
php
$file = "test.txt";
$content = file_get_contents($fiel);
echo $content;
1.2.3 readfile() 函数
readfile()函数用于将文件的内容读取到输出缓冲中,它可以用来输出文本文件、图片文件等。下面是一个示例:
php
$file = 'test.txt';
readfile($file);
1.2.4 file() 函数
file()函数用于读取文件的内容,将文件内容读取到一个数组中,每一行为数组中的一个元素。下面是一个示例:
php
$fiel = 'test.txt';
$content = file($file);
foreach($content as $line){
echo $line;
}