搜索
首页后端开发php教程PHP中文件读写操作_PHP教程

PHP中文件读写操作_PHP教程

Jul 13, 2016 am 10:59 AM
php函数实现我们提供操作文件读写

PHP中文件读写操作


  PHP中提供了一系列的I/O函数,能简捷地实现我们所需要的功能,包括文件系统操作和目录操作(如“复制[copy]”)。下面给大家介绍的是基本的文件读写操作:(1)读文件;(2)写文件;(3)追加到文件。

  以下是一篇关于文件基本读写操作的文章,我曾经就是看了这篇文章后学会文件基本操作的,在这里发出来与大家共享:
读文件:
PHP代码:
1.     2.     
3.    $file_name = "data.dat"; 
4.    // 要读取的文件的绝对路径: homedata.dat 
5.     
6.    $file_pointer = fopen($file_name, "r"); 
7.    // 打开文件,8.    "r" 是一种模式,9.    或者说我们要进行的操作方法,10.    详见本文后面的介绍
11.     
12.    $file_read = fread($file_pointer, filesize($file_name)); 
13.    // 通过文件指14.    针读取文件内容
15.     
16.    fclose($file_pointer); 
17.    // 关闭文件
18.     
19.    print "读取到的文件内容是: $file_read"; 
20.    // 显示文件内容
21.    ?> 
22.     

写文件:
PHP代码:
1.     2.     
3.    $file_name = "data.dat"; 
4.    // 绝对路径: homedata.dat 
5.     
6.    $file_pointer = fopen($file_name, "w"); 
7.    // "w"是一种模式,8.    详见后面
9.     
10.    fwrite($file_pointer, "what you wanna write"); 
11.    // 先把文件剪切12.    为0字节大小,13.     然后写入
14.     
15.    fclose($file_pointer); 
16.    // 结束
17.     
18.    print "数据成功写入文件"; 
19.     
20.    ?> 
21.     

追加到文件后面:
PHP代码:
1.     2.     
3.    $file_name = "data.dat"; 
4.    // 绝对路径: homedata.dat 
5.     
6.    $file_pointer = fopen($file_name, "a"); 
7.    // "w"模式
8.     
9.    fwrite($file_pointer, "what you wanna append"); 
10.    // 不11.    把文件剪切12.    成0字节,13.     把数据追加到文件最后
14.     
15.    fclose($file_pointer); 
16.    // 结束
17.     
18.    print "数据成功追加到文件"; 
19.     
20.    ?> 
21.     

以上只是简单介绍,下面我们要讨论一些更深层的。

有时候会发生多人写入的情况(最常见是在流量较大的网站),会产生无用的数据写入文件, 例如:

info.file文件内容如下 -> 

|1|Mukul|15|Male|India (n) 
|2|Linus|31|Male|Finland (n) 

现在两个人同时注册,引起文件破坏-> 

info.file -> 

|1|Mukul|15|Male|India 
|2|Linus|31|Male|Finland 
|3|Rob|27|Male|USA| 
Bill|29|Male|USA 

上例中当PHP写入Rob的信息到文件的时候,Bill正好也开始写入,这时候正好需要写入Rob纪录的'n',引起文件破坏。

我们当然不希望发生这样的情况, 所以让我们看看文件锁定:
PHP代码:
1.     2.     
3.    $file_name = "data.dat"; 
4.     
5.    $file_pointer = fopen($file_name, "r"); 
6.     
7.    $lock = flock($file_pointer, LOCK_SH); 
8.    // 我使用4.0.2,9.    所以用LOCK_SH,10.    你可能需要直接写成 1. 
11.     
12.    if ($lock) { 
13.     
14.    $file_read = fread($file_pointer, filesize($file_name)); 
15.    $lock = flock($file_pointer, LOCK_UN); 
16.    // 如果版本小于PHP4.0.2,17.     用 3 代替 LOCK_UN
18.     
19.    } 
20.     
21.    fclose($file_pointer); 
22.     
23.    print "文件内容为 $file_read"; 
24.     
25.    ?> 
26.     

上例中,如果两个文件read.php和read2.php都要存取该文件,那么它们都可以读取,但是当一个程序需要写入的时候,它必须等待,直到读操作完成,文件所释放。
PHP代码:
1.     2.     
3.    $file_name = "data.dat"; 
4.     
5.    $file_pointer = fopen($file_name, "w"); 
6.     
7.    $lock = flock($file_pointer, LOCK_EX); 
8.    // 如果版本低于PHP4.0.2,9.     用 2 代替 LOCK_EX
10.     
11.    if ($lock) { 
12.     
13.    fwrite($file_pointer, "what u wanna write"); 
14.    flock($file_pointer, LOCK_UN); 
15.    // 如果版本低于PHP4.0.2,16.     用 3 代替 LOCK_UN
17.     
18.    } 
19.     
20.    fclose($file_pointer); 
21.     
22.    print "数据成功写入文件"; 
23.     
24.    ?> 
25.     

虽然"w"模式用来覆盖文件, 单我觉得不适用。
PHP代码:
1.     2.     
3.    $file_name = "data.dat"; 
4.     
5.    $file_pointer = fopen($file_name, "a"); 
6.     
7.    $lock = flock($file_pointer, LOCK_EX); 
8.    // 如果版本低于PHP4.0.2,9.     用 2 代替 LOCK_EX
10.     
11.    if ($lock) { 
12.     
13.    fseek($file_pointer, 0, SEEK_END); 
14.    // 如果版本小于PHP4.0RC1,15.     使用 fseek($file_pointer, filsize($file_name)); 
16.     
17.    fwrite($file_pointer, "what u wanna write"); 
18.    flock($file_pointer, LOCK_UN); 
19.    // 如果版本低于PHP4.0.2,20.     用 3 代替 LOCK_UN
21.     
22.    } 
23.     
24.    fclose($file_pointer); 
25.     
26.    print "数据成功写入文件"; 
27.     
28.    ?> 
29.     

Hmmm..., 对于追加数据与其他操作有点不同,就是FSEEK! 确认文件指针在文件尾部总是一个好习惯。

如果是在Windows系统下, 上面的文件中文件名前面需要加上''. 

FLOCK杂谈: 

Flock()只在文件打开后才锁定。 在上列中文件打开后才获得锁定,现在文件的内容只是在当时的内容, 而不反映出别的程序操作的结果,因此不只是在文件追加操作,就是对读取操作也应该使用fseek。
(此处翻译可能不是很确切, 但我想意思到了)。

关于模式:

'r' - 只读方式打开, 文件指针置于文件头

'r+' - 读写方式打开,文件指针置于文件头

'w' - 只写打开,文件指针置于文件头, 文件被剪切为0字节, 如果文件不存在, 尝试建立文件

'w+' - 读写打开,文件指针置于文件头, 文件大小被剪切为0字节,如果文件不存在, 尝试建立文件

'a' - 只写方式打开,文件指针置于文件尾,如果文件不存在,尝试建立文件

'a+' - 读写打开,文件指针置于文件尾,如果文件不存在, 尝试建立文件

顺便说一下创建文件目录的代码

//创建类似"../../../xxx/xxx.txt"的目录

function createdirs($path, $mode = 0777) //mode 077

$dirs = explode('/',$path); 
$pos = strrpos($path, "."); 
if ($pos === false) { // note: three equal signs 
// not found, means path ends in a dir not file 
$subamount=0; 

else { 
$subamount=1; 


for ($c=0;$c  $thispath=""; 
for ($cc=0; $cc  $thispath.=$dirs[$cc].'/'; 

if (!file_exists($thispath)) { 
//print "$thispath
"; 
mkdir($thispath,$mode); //mkdir函数创建目录


}
//调用如createdirs("xxx/xxxx/xxxx",);

//原函数中使用$GLOBALS["dirseparator"]我改成了'/' 

function recur_mkdirs($path, $mode = 0777) //mode 0777

//$GLOBALS["dirseparator"] 
$dirs = explode($GLOBALS["dirseparator"],$path); 
$pos = strrpos($path, "."); 
if ($pos === false) { // note: three equal signs 
// not found, means path ends in a dir not file 
$subamount=0; 

else { 
$subamount=1; 


这些只是一些基本的关于文件的操作代码,相信对初学者很有用,在此贴出来,希望有抛砖引玉之功能!

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631860.htmlTechArticlePHP中文件读写操作 PHP中提供了一系列的I/O函数,能简捷地实现我们所需要的功能,包括文件系统操作和目录操作(如复制[copy])。下面给大...
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP的完整形式是什么?PHP的完整形式是什么?Apr 28, 2025 pm 04:58 PM

文章讨论了PHP,详细介绍了其完整形式,在We​​b开发中的主要用途,与Python和Java的比较以及对初学者的学习便利性。

PHP如何处理形式数据?PHP如何处理形式数据?Apr 28, 2025 pm 04:57 PM

PHP使用$ \ _ post和$ \ _获取超级全局的php处理数据,并通过验证,消毒和安全数据库交互确保安全性。

PHP和ASP.NET有什么区别?PHP和ASP.NET有什么区别?Apr 28, 2025 pm 04:56 PM

本文比较了PHP和ASP.NET,重点是它们对大规模Web应用程序,性能差异和安全功能的适用性。两者对于大型项目都是可行的,但是PHP是开源和无关的,而ASP.NET,

PHP是对病例敏感的语言吗?PHP是对病例敏感的语言吗?Apr 28, 2025 pm 04:55 PM

PHP的情况敏感性各不相同:功能不敏感,而变量和类是敏感的。最佳实践包括一致的命名和使用对案例不敏感的功能进行比较。

您如何重定向PHP中的页面?您如何重定向PHP中的页面?Apr 28, 2025 pm 04:54 PM

本文讨论了PHP中针对页面重定向的各种方法,重点关注header()函数,并解决了诸如“标题已经发送”错误之类的常见问题。

解释PHP中的类型暗示解释PHP中的类型暗示Apr 28, 2025 pm 04:52 PM

文章讨论了PHP中的类型暗示,这是一个用于指定功能中预期数据类型的功能。主要问题是通过类型执法提高代码质量和可读性。

PHP中的PDO是什么?PHP中的PDO是什么?Apr 28, 2025 pm 04:51 PM

本文讨论了PHP数据对象(PDO),这是PHP中数据库访问的扩展名。它通过准备好的语句及其对MySQLI的好处,包括数据库抽象和更好的错误处理,强调了PDO在增强安全性方面的作用。

如何在PHP中创建API?如何在PHP中创建API?Apr 28, 2025 pm 04:50 PM

文章讨论了创建和保护PHP API,详细介绍了从端点定义到使用Laravel和最佳安全实践等框架优化性能优化的步骤。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器