手记

php文件操作

每次听丽江小倩都会想起大理古城,苍山雪,洱海月,丽江束河古镇,茶马古道,玉龙雪山,泸沽湖,还有虎跳峡,香格里拉,那里的普达措森林公园,藏传佛教,还有纯洁朴实的人们

在操作文件之前呢,我们应该打开文件,使用fopen()函数,注意,在打开文件时应该务必小心,一不小心可能就会把文件内容删掉,

1 打开文件 语法

resource fopen ( string $filename  , string $mode  [, bool $use_include_path  = false  [, resource $context  ]] )
参数说明:参数path字符串包含欲打开的文件路径及文件名;参数mode字符串则代表着流形态,提供了“r”、“w”、“a”、“+”、“b”、“r”六种模式选择符号,常用的模式如下:

“r” :以只读方式打开文件,该文件必须存在。

“w” :打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

“a” :以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)



“r+” :以可读写方式打开文件,该文件必须存在。

“w+” :打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

“a+”:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)



“rb” :只读打开一个二进制文件,只允许读数据。

“wb” :只写打开或建立一个二进制文件,只允许写数据。

“ab” :追加打开一个二进制文件,并在文件末尾写数据。



“rb+” :读写打开一个二进制文件,允许读写数据,文件必须存在。

“wb+” :读写打开或建立一个二进制文件,允许读和写。

“ab+” :读写打开一个二进制文件,允许读,或在文件末追加数据。



“rt” :只读打开一个文本文件,只允许读数据。

“wt” :只写打开或建立一个文本文件,只允许写数据。

“at” :追加打开一个文本文件,并在文件末尾写数据。



“rt+” :读写打开一个文本文件,允许读和写。

“wt+” :读写打开或建立一个文本文件,允许读写。

“at+” :读写打开一个文本文件,允许读,或在文件末追加数据。



打开方式总结:

① 打开是否为二进制,用“b”标识;

② 读写方式有以下几种:只读、只写、读写、追加只写、追加读写。

③ 对文件是否必须存在,以及存在时是清空还是追加会有不同的响应。具体判断如下图:

第三个参数

$use_include_path是可选的,改参数在配置文件中php.ini中指定一个路径,
如果希望服务器在这个路径下打开所指定的文件,则可设置为1或者true

<?php
	$handle = fopen("/home/result/file.txt",'r')
	$handle = fopen("/home/result/file.gif","wb")
	$handle = fopen("http://www.example.com/","r")
	$handle = fopen("ftp://user:password@example.com/somefile.txt","w")
?>

如果在打开和写入文件遇到问题,在windows上

<?php
	$handle = fopen("c:\\data\\info.txt",'r');
?>

2 关闭文件

对文件操作之后,应该关闭文件,否则会引起错误

bool fclose(resource $handle)
该函数将handle指向的文件关闭,成功时返回true,失败时返回false
<?php
	$handle = fopen('/file.txt','r')
	fclose($handle)
?>

1 读取整个文件的内容

  • readfile()
    该函数用于读入一个文件,并将其写入到输出缓冲,如果出现错误就返回false
int readfile(string $filename [,bool $use_include_path ,[resource $context]])
  • file()
    可以读取文件的内容
array file(string $filename [,bool $use_include_path ,[resource $context]])
<?php
	$lines = file("http://www.example.com/");
	foreach($lines as $line_num => $line){
		echo "第".$line_num."行的内容是".$line;
	}
?>
  • file_get_contents()
    能是用来将文件的内容读入到一个字符串
string file_get_contents  ( string $filename  [, bool $use_include_path  = false  [, resource $context  [, int $offset  = -1  [, int $maxlen  ]]]] )
<?php
	readfile('me.txt')

	$f_arr = file('me.txt')
	foreach($f_arr as $count){
		echo $count;
	}

	$f_str = file_get_content('me.txt');
	echo $f_str;
?>

读取一行数据

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

从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

string fgetss(resource $handle [,int $length [,string $allowable_tags]])
<?php
	$fopen = fopen("me.php",'rb')
	while(!feof($fopen)){
		echo fgets($fopen);
	}
	fclose($fopen);

	while(!feof($fopen)){
		echo fgetss($fopen);
	}
?>

读取一字符

string fgetc(resource $handle)

从文件句柄中获取一个字符。

<?php
	$fopen = fopen("this.txt","rb");
	while(false!==($chr=fgetc($fopen))){
		echo $chr;
	}
	fclose($fopen);
?>
string fread(int $handle,int $length);

fread() 从文件指针 handle 读取最多 length 个字节。 该函数在遇上以下几种情况时停止读取文件:

  1. 读取了 length 个字节
  2. 到达了文件末尾(EOF)
<?php
	$fopen = fopen("this.txt","rb");
	echo fread($fopen,38);
	fclose($fopen);
?>

写入文件内容

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

handle
文件系统指针,是典型地由 fopen() 创建的 resource (资源)。
string
The string that is to be written.
length
如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。
注意如果给出了 length 参数,则 magic_quotes_runtime 配置选项将被忽略,而 string 中的斜线将不会被抽去。

int file_put_contents(string $filename,string $string [,int $length]);

filename
要被写入数据的文件名。
data
要写入的数据。类型可以是 string , array 或者是 stream 资源(如上面所说的那样)。
如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
参数 data 可以是数组(但不能为多维数组),这就相当于 file_put_contents($filename, join(’’, $array))。
flags
flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。


1人推荐
随时随地看视频
慕课网APP