1. 文章
  2. 文章详情

php文件操作函数解析

常规的操作文件方法

一般操作文件的方法分四个步骤:1.打开文件 2.读入文件内容 3.写入内容到文件 4.关闭文件

打开或创建文件

函数:fopen(文件名, 打开方式)
文件名必须是文件的全路径,打开方式有以下几种:
“r” 只读方式打开,将文件指针指向文件头。
“r+” 读写方式打开,将文件指针指向文件头。
“w” 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
“w+” 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
“a” 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
“a+” 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
“x” 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE
“x+” 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE

使用方法:

$myFile = fopen("testfile.txt", "w");

读取文件内容

函数:fread(文件句柄, 读取大小)
返回读到的内容,如果失败,则返回false

使用方法:

$myFile = fopen(“testfile.txt”, “r”);
//filesize是判断文件的大小
text=fread(text = fread(text=fread(myfile, filesize(“testfile.txt”));

写入内容到文件

函数:fwrite(文件句柄, 写入内容)
返回写入的字符数,出现错误时则返回 false。

使用方法:

$myfile = fopen("testfile.txt", "w");
$txt = "Bill Gatesn";
fwrite($myfile, $txt);

关闭文件

函数:fclose(文件句柄)

使用方法:

$myfile = fopen("testfile.txt", "w");
fclose($myfile);

实例

//以读写的方式打开文件,如果文件不存在则创建
$file = fopen("testFile.txt", 'w+');
//如果打开失败则终止
if($file == false) 
{
	exit("open file fail...");
}
//要写入文件的信息
$txtWrite = "I am a coder!"; 
//写入信息到文件
if(fwrite($file, $txtWrite)==false) 
{
	exit("write file fail...");
}
//测试了如果写完不关闭,不能读取
fclose($file);
//以读的方式打开
$file = fopen("testFile.txt", "r");
$txtRead = fread($file, filesize("testfile.txt"));
//如果读取失败则终止
if($txtRead==false)
{
	exit("read file fail...");
}
echo "Read Success: ".$txtRead;

fgets - 从文件指针中读取一行 

// fgets — 从文件指针中读取一行 
// string fgets  ( resource $handle  [, int $length  ] )
// 文件指针必须是有效的,必须指向由 fopen()  或 fsockopen()  成功打开的文件(并还未由 fclose()  关闭)。
$file = fopen('fopen.txt','a+');
$txt = fgets($file);
echo $txt;

// 读取所有行
// 如果之前读过一行的话
// 它是会绕过的,不会再去读取已经读取过的那一行
while($content=fgets($file)){
	echo "";
	echo $content;
}

file - 把整个文件读入一个数组中

// array file  ( string $filename  [, int $flags  = 0  [, resource $context  ]] )
// file — 把整个文件读入一个数组中 
$arr = file('fopen.txt');
var_dump($arr);
// 是以换行符 n 为标准
// 分隔符

file_get_content - 将整个文件读入一个字符串 

// string file_get_contents  ( string $filename  [, bool $use_include_path  = false  [, resource $context  [, int $offset  = -1  [, int $maxlen  ]]]] )
// 将整个文件读入一个字符串 
$content = file_get_contents('fopen.txt');
// 字符串
echo $content;

fopen

        // 创建文件
	// "w"	 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
	// "w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
	// "a"	 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
	// "a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
	// "x"	 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE
	// "x+" 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE
	// "r+" 读写方式打开,将文件指针指向文件头。
	// "r"	 只读方式打开,将文件指针指向文件头。
	/**
	 * 一般操作文件的方法分四个步骤:1.打开文件 2.读入文件内容 3.写入内容到文件 4.关闭文件
	 */
	

	// 判断一个文件是否存在用 file_exists()
	$filename = 'fopen.txt';
	if(file_exists($filename)){
		echo "";
		echo "该文件已经存在";
		echo "";
		// 读取文件内容
		// 取得文件大小 filesize(文件名)
		$file = fopen('fopen.txt','a+');
		echo  $filename  .  ': '  .  filesize ( $filename ) .  ' bytes' ;
		echo "";
		$content = fread($file,filesize($filename));
		echo $content;
	}else{
		// 创建文件
		$file = fopen('fopen.txt','a+');
		var_dump($file);
	}

	// 上面这种情况是保证只执行一次

fwrite

// 10.1.1.3 写入内容到文件
// 函数:fwrite(文件句柄, 写入内容)  返回写入的字符数,出现错误时则返回 false。
$file = fopen('fopen.txt','a+');
$txt = "Bill Gatesn";
fwrite($file,$txt);
// fclose()
fclose($file);

echo "已经写入了";

readfile - 函数用于读入一个文件,并将其写入到输出缓冲中,如果出现错误则返回false

// readfile()函数用于读入一个文件,并将其写入到输出缓冲中,如果出现错误则返回false
// int readfile  ( string $filename  [, bool $use_include_path  = false  [, resource $context  ]] )
$txt = readfile('fopen.txt');
echo $txt;
// 返回的是字符串的个数

test.php

//以读写的方式打开文件,如果文件不存在则创建
$file = fopen("testFile.txt", 'w+');
//如果打开失败则终止
if($file == false) 
{
	exit("open file fail...");
}
//要写入文件的信息
$txtWrite = "I am a coder!"; 
//写入信息到文件
if(fwrite($file, $txtWrite)==false) 
{
	exit("write file fail...");
}
//测试了如果写完不关闭,不能读取
fclose($file);
//以读的方式打开
$file = fopen("testFile.txt", "r");
$txtRead = fread($file, filesize("testfile.txt"));
//如果读取失败则终止
if($txtRead==false)
{
	exit("read file fail...");
}
echo "Read Success: ".$txtRead;

参考:https://zhuanlan.zhihu.com/p/44898271

发表评论

登录后才能评论

评论列表(0条)