【php】文件处理操作

	php提供了丰富的文件处理函数
文件处理主要包括:
	①文件的创建/打开
	②文件的写入
	③文件读取
	④检查文件是否存在
	⑤文件的拷贝与删除
	⑥获取文件的大小、类型及修改时间

	fopen()函数的使用:

fopen()函数主要用来打开一个文件或url地址
	语法:
		resource fopen(string filename,mode);
		①参数filename:尝试打开或创建的文件名
		②参数mode:打开模式
	注意:
	1.php中没有单独的文件创建函数,创建或打开文件都是使用fopen()函数
	2.当使用fopen()函数打开一个文件时,如果文件不存在,则会尝试创建该文件,并返回一个资源;如果打开失败,返回false

	
案例1,使用fopen()函数创建一个文件:

	<?php
	if(!file_exists("test.txt")){//如果文件不存在(当前目录下)
		$fh=fopen("test.txt","w");//以只写模式创建一个test.txt文件
		fclose($fh);//关闭文件
	}
	?>

案例2,使用fopen()函数打开url地址

	<?php
	$fh=fopen("http://www.baidu.com","r");
	if($fh){
		while(!feof($fh)){
			echo fgets($fh);
		}
	}
	?>

	注意:fopen()返回的只是一个资源,要想显示打开的页面地址,还需要使用fgets()函数读取,并使用echo输出

	fwrite()函数的使用:

fwrite()函数主要用来向文件写入字符串,如果写入成功,则返回写入的字符数,否则返回false
	格式:
		int fwrite(resource handle,string data,int length)
	
	注意:fwrite()函数将data的内容写入文件指针handle处

	
	
	注意:如果指定了可选参数length,当写入了length个字节或者写完了data以后,写入就会停止
	


案例1,写入文件:

	<?php
	$filename="file.txt";//要写入的文件名称
	$content="你好!";//要写入的内容
	$fh=fopen($filename,"w");//打开文件
	$num=fwrite($fh,$content);//将内容写入文件中,返回写入的字符数
	//$num=fwrite($fh,$content,4);//只能将四个字符写入到file.txt文件中
	echo $num;//输出结果为:6
	fclose($fh);//关闭文件
	?>

案例2,追加写入:

	<?php
	$filename="file.txt";
	$content="你好!";
	$fh=fopen($filename,"a");
	echo fwrite($fh,$content);
	fclose($fh);//关闭文件
	?>

	file_put_contents()函数的使用:

file_put_content():此函数主要用于一次性将字符串写入文件或追加字符串到文件,如果成功,返回写入到文件的字符数,失败的话返回false
	
	语法:
	     int file_put_content(string filename,string data,int flags,resource context);



案例1,写入文件:

	<?php
	echo file_put_contents("file.txt","你好");//浏览器输出结果为:4
	?>

	注意:
	1.如果文件不存在,则创建文件,相当于fopen()函数行为
	2.如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免

案例2,追加写入:
	
	<?php
	file_put_contents("file.txt","你好",FILE_APPEND);//追加内容到文件尾部
	?>

	文件的读取函数:

文件的读取函数主要有如下几种:
	①fread():从文件中读取数据
	②fgets():从文件中读取一行数据,并将文件指针指向下一行
	③fgetc():逐字读取文件数据,直到文件结束
	④file():把整个文件内容读取到一个数组中,数组中的每个元素都是文件中对应的一行
	⑤file_get_contents():将整个文件内容读入到一个字符串

fread():此函数用于读取文件

	语法:

	string fread(int handle,int length);

	注意:
		fread()函数从文件指针handle读取最多length个字节。当遇到下列情况时,会停止读取文件
		①在读取完最多length个字节数时
		②达到文件末尾的时候(eof)

案例:从文件中读取10个字节
	<?php
	$filename = "test.txt";
	$fh = fopen($filename, "r");
	echo fread($fh, "10");
	fclose($fh);
	?>


fgets():此函数主要用来从文件中读取一行数据,并将文件指针指向下一行

	语法:

	string fgets(int handle,int length)

	注意:
	①fgets() 从 handle 指向的文件中读取一行并返回长度最多为 length-1 字节的字符串
	②碰到换行符(包括在返回值中)、EOF 或者已经读取了 length-1 字节后停止
	③如果没有指定 length ,则默认为 1K ,或者说 1024 字节
案例:
	<?php
	$fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");
	// if条件避免无效指针
	if($fh){
    		while(!feof($fh)) {
        		echo fgets($fh), '<br />';
    		}
	}
	fclose($fh);
	?>
feof() 函数测试文件指针是否到了文件结束的位置,该文件指针必须有效,如果是无效的资源,则会陷入无限循环中

fgetc():此函数主要用于逐字读取文件数据,直到文件结束

	语法:

	string fgetc(resource handle);

案例:从文件中读取10个字节
	<?php
	$fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");
	if($fh){
    		while(!feof($fh)) {
       		 echo fgetc($fh);
    		}
	}
	fclose($fh);
	?>





file():此函数主要用于把整个文件读取到一个数组中,数组中的每个单元都是文件中相应的一行,成功,返回一个数组;失败返回false

	语法:

	array file(string filename);

案例:从文件中读取10个字节
	<?php
	$lines = file('test.txt');
	// 在数组中循环并加上行号
	foreach ($lines as $line_num => $line) {
    		echo "Line #{$line_num} : ",$line,'<br />';
	}
	?>

test.txt 文件内容: 

你好!
这是第二行文字。

浏览器显示: 

Line #0 : 你好! 
Line #1 : 这是第二行文字。


file_get_contents():此函数主要用于将整个文件读入到一个字符串,成功,则返回一个字符串;失败则返回false

	语法:

	string file_get_contents(string filename,int offset,int maxlen);


案例:
	<?php
	// 读取时同事将换行符转换成 <br />
	echo nl2br(file_get_contents('test.txt'));
	?>

file_exists():此函数主要用来检查一个文件或目录是否存在

	语法:

	bool file_exists(string filename);

案例:
	<?php
	$filename = 'test.txt';
	if (file_exists($filename)) {
    		echo "文件 $filename 存在";
	} else {
    		echo "文件 $filename 不存在";
	}
	?>


copy():此函数主要用来拷贝文件
		
		成功返回true,失败返回false

	语法:

	bool copy(string file,string newfile);

案例:
	<?php
	if (copy('test.txt', 'test.txt.bak')) {
    		echo "文件拷贝成功";
	} else {
    		echo "文件拷贝失败";
	}
	?>


unlink():此函数主要用来删除文件
		
		成功返回true,失败返回false

	语法:

	bool unlink(string filename);

案例:
	<?php
	unlink("test.txt");	
	?>


获取文件信息的函数主要有如下几种:

	①filesize():取得文件大小,成功则返回文件大小的字节数,失败返回false

	②filetype():取得文件的类型,成功则返回文件的类型,可能的值有file、dir、char、block、link等

	③filemtime():取得文件的修改时间,成功则返回文件上次被修改的时间戳




	问题?

	如何锁定文件:在向一个文本文件中写入数据时,需要先锁定文件,以防其它用户同时也修改此文件内容,如何锁定文件呢?
	
	php中通过flock()函数实现文件锁定,语法如下:
	
	bool flock(int handle,int operation);
	
	参数1:是一个已经打开的文件指针
	
	参数2:控制锁定权限,有四个可选值:
	
	LOCK_SH:取得共享锁定(读取程序)
	LOCK_EX:取得独占锁定(写入程序)
	LOCK_UN:释放锁定
	LOCK_NB:防止iflock()在锁定时堵塞


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值