PHP文件处理

PHP 文件处理


数据的存取

数据在服务器上的存取主要有两种方式:文件或者数据库

目前绝大多数应用都是使用数据库来读写数据,但是文件存取在某些场合仍然会使用,譬如:

•      记录错误日志

•      导出数据到文件

从文件导入数据

写文件

写文件主要有三步操作,就如同我们手动操作一样,程序也要遵守下面的步骤:

•       打开文件,使用fopen函数

•       写入文件,使用fwrite函数

•       关闭文件,使用fclose函数

打开文件

fopen() 函数用于在 PHP 中打开文件。

此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:

<html>
 <body>
 <?php
 $file=fopen("welcome.txt","r");
 ?>
 </body>
 </html>

文件可能通过下列模式来打开:

QQ图片20161009145912.png

注释:如果 fopen() 函数无法打开指定文件,则返回 0 (false)。

实例

如果 fopen() 函数不能打开指定的文件,下面的实例会生成一段消息:

<html>
 <body>
 <?php
 $file=fopen("welcome.txt","r") or exit("Unable to open file!");
 ?>
 </body>
 </html>

 写入文件

fwrite () 函数用于写入文件

fwrite主要也是两个参数,handle是fopen打开成功后返回的Resource变量,string是要写入的数据

int fwrite ( resource $handle , string $string [, int $length ] )

当写入成功后,fwrite会返回写入的字符数,如果写入失败则返回false

实例

<?php
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Bill Gates\n";
fwrite($myfile, $txt);
$txt = "Steve Jobs\n";
fwrite($myfile, $txt);
fclose($myfile);
?>

请注意,我们向文件 "newfile.txt" 写了两次。在每次我们向文件写入时,在我们发送的字符串 $txt 中,第一次包含 "Bill Gates",第二次包含 "Steve Jobs"。在写入完成后,我们使用 fclose() 函数来关闭文件。

如果我们打开 "newfile.txt" 文件,它应该是这样的:

Bill Gates

Steve Jobs

读取文件

fread用来读取整个文件,而不用使用while语句进行循环,需要注意,第二个参数是用来控制读取的最大字节数,这个参数是必填的

string fread ( resource $handle , int $length )

执行

echo fread($resource, 1024);

可以读取最大1024个字节的文件内容

关闭文件

fclose() 函数用于关闭打开的文件:

<?php
 $file = fopen("test.txt","r");
 
 //执行一些代码
 
 fclose($file);
 ?>

检测文件末尾(EOF)

feof() 函数检测是否已到达文件末尾(EOF)。

在循环遍历未知长度的数据时,feof() 函数很有用。

注释:在 w 、a 和 x 模式下,您无法读取打开的文件!

if (feof($file)) echo "文件结尾";

逐行读取文件

fgets() 函数用于从文件中逐行读取文件。

注释:在调用该函数之后,文件指针会移动到下一行。

实例

下面的实例逐行读取文件,直到文件末尾为止:

<?php
 $file = fopen("welcome.txt", "r") or exit("无法打开文件!");
 // 读取文件每一行,直到文件结尾
 while(!feof($file))
 {
     echo fgets($file). "<br>";
 }
 fclose($file);
 ?>

逐字符读取文件

fgetc() 函数用于从文件中逐字符地读取文件。

注释:在调用该函数之后,文件指针会移动到下一个字符。

实例

下面的实例逐字符地读取文件,直到文件末尾为止:

<?php
 $file=fopen("welcome.txt","r") or exit("无法打开文件!");
 while (!feof($file))
 {
     echo fgetc($file);
 }
 fclose($file);
 ?>

file_put_contents

无论是读还是写,fopen和fclose都是很繁琐的调用,从PHP5开始,引入了新的函数

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

file_put_contents 相当于执行了 fopen + fwrite + fclose

file_put_contents('file', "hello world\n");

file_put_contents('file', "hello world\n", FILE_APPEND);

file_get_contents

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource$context [, int $offset = -1 [, int $maxlen ]]]] )

 file_get_contents 相当于执行了 fopen + fread + fclose

echo file_get_contents('file');

其他文件操作函数

S  file_exists 将文件地址作为参数传入,可以判断文件是否存在,然后true或者false

S  filesize 可以返回参数中文件的大小,以字节为单位

S  unlink 可以删除传递给它的文件地址所代表的文件


PHP Filesystem 参考手册

如需查看 PHP 文件系统函数的完整参考手册,请访问我们的PHP Filesystem 参考手册。


Weiter lernen
||
<html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html>
einreichenCode zurücksetzen