首页 php教程 php手册 PHP中dat文件读写操作实例详解

PHP中dat文件读写操作实例详解

May 25, 2016 pm 04:40 PM
php文件读写

在php不不管读取什么类型的文件多半是使用fopen函数,然后配合其它的函数再进行操作,下面我来介绍读取dat数据文件的方法.

以下是一篇关于文件基本读写操作的文章,我曾经就是看了这篇文章后学会文件基本操作的,在这里发出来与大家共享,复制内容到剪贴板,代码如下:

$file_name = "data.dat"; 
// 要读取的文件的绝对路径: homedata.dat 
$file_pointer = fopen($file_name, "r"); 
// 打开文件,"r" 是一种模式,或者说我们要进行的操作方法,详见本文后面的介绍 
$file_read = fread($file_pointer, filesize($file_name)); 
// 通过文件指针读取文件内容 
fclose($file_pointer); 
// 关闭文件 
print "读取到的文件内容是: $file_read"; 
// 显示文件内容 
$file_name = "data.dat"; 
// 绝对路径: homedata.dat 
$file_pointer = fopen($file_name, "w"); 
// "w"是一种模式,详见后面 
fwrite($file_pointer, "what you wanna write"); 
// 先把文件剪切为0字节大小, 然后写入 
fclose($file_pointer); 
// 结束 
print "数据成功写入文件"; 
$file_name = "data.dat"; 
// 绝对路径: homedata.dat 
//开源代码phprm.com 
$file_pointer = fopen($file_name, "a"); 
// "w"模式 
fwrite($file_pointer, "what you wanna append"); 
// 不把文件剪切成0字节, 把数据追加到文件最后 
fclose($file_pointer); 
// 结束 
print "数据成功追加到文件";
登录后复制

以上只是简单介绍,下面我们要讨论一些更深层的,有时候会发生多人写入的情况,最常见是在流量较大的网站,会产生无用的数据写入文件,例如,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',引起文件破坏.

我们当然不希望发生这样的情况,所以让我们看看文件锁定,复制内容到剪贴板,代码如下:

$file_name = "data.dat"; 
$file_pointer = fopen($file_name, "r"); 
$lock = flock($file_pointer, LOCK_SH); 
// 我使用4.0.2,所以用LOCK_SH,你可能需要直接写成 1. 
if ($lock) { 
$file_read = fread($file_pointer, filesize($file_name)); 
$lock = flock($file_pointer, LOCK_UN); 
// 如果版本小于PHP4.0.2, 用 3 代替 LOCK_UN 
} 
fclose($file_pointer); 
print "文件内容为 $file_read";
登录后复制

上例中,如果两个文件read.php和read2.php都要存取该文件,那么它们都可以读取,但是当一个程序需要写入的时候,它必须等待,直到读操作完成,文件所释放,复制内容到剪贴板,代码如下:

$file_name = "data.dat"; 
$file_pointer = fopen($file_name, "w"); 
$lock = flock($file_pointer, LOCK_EX); 
// 如果版本低于PHP4.0.2, 用 2 代替 LOCK_EX 
if ($lock) { 
fwrite($file_pointer, "what u wanna write"); 
flock($file_pointer, LOCK_UN); 
// 如果版本低于PHP4.0.2, 用 3 代替 LOCK_UN 
} 
fclose($file_pointer); 
print "数据成功写入文件";
登录后复制

对于追加数据与其他操作有点不同,就是FSEEK,确认文件指针在文件尾部总是一个好习惯,如果是在Windows系统下,上面的文件中文件名前面需要加上''.

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

关于模式:

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

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

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

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

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

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


本文地址:

转载随意,但请附上文章地址:-)

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热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

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

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24