PHP文件操作实现代码分享(2)


$fp = fopen("$root/order.txt",'rb');
echo fread($fp,10); //读取10个字节
fclose($fp);


l关闭文件
关闭文件比较简单,直接调用fclose()函数即可,如果返回true,则表明成功,反之。如下:

fclose($fp);
l删除文件
unlink()函数(没有名为delete的函数),如下:

unlink("$root/order.txt");
l确定文件大小
可以使用filesize()函数来查看一个文件的大小(字节为单位),如下:
echo filesize("$root/order.txt");

大家也可以参考下面的文章
以下是一篇关于文件基本读写操作的文章,我曾经就是看了这篇文章后学会文件基本操作的,在这里发出来与大家共享:
读文件:
PHP代码:

复制代码 代码如下:


1. <?php
2. &nbsp;
3. $file_name = "data.dat";
4. // 要读取的文件的绝对路径: homedata.dat
5. &nbsp;
6. $file_pointer = fopen($file_name, "r");
7. // 打开文件,8. "r" 是一种模式,9. 或者说我们要进行的操作方法,10. 详见本文后面的介绍
11. &nbsp;
12. $file_read = fread($file_pointer, filesize($file_name));
13. // 通过文件指14. 针读取文件内容
15. &nbsp;
16. fclose($file_pointer);
17. // 关闭文件
18. &nbsp;
19. print "读取到的文件内容是: $file_read";
20. // 显示文件内容
21. ?>
22. &nbsp;


写文件:
PHP代码:

复制代码 代码如下:


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


追加到文件后面:
PHP代码:

复制代码 代码如下:


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


以上只是简单介绍,下面我们要讨论一些更深层的。
有时候会发生多人写入的情况(最常见是在流量较大的网站),会产生无用的数据写入文件, 例如:
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. <?php
2. &nbsp;
3. $file_name = "data.dat";
4. &nbsp;
5. $file_pointer = fopen($file_name, "r");
6. &nbsp;
7. $lock = flock($file_pointer, LOCK_SH);
8. // 我使用4.0.2,9. 所以用LOCK_SH,10. 你可能需要直接写成 1.
11. &nbsp;
12. if ($lock) {
13. &nbsp;
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. &nbsp;
19. }
20. &nbsp;
21. fclose($file_pointer);
22. &nbsp;
23. print "文件内容为 $file_read";
24. &nbsp;
25. ?>
26. &nbsp;


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

复制代码 代码如下:


1. <?php
2. &nbsp;
3. $file_name = "data.dat";
4. &nbsp;
5. $file_pointer = fopen($file_name, "w");
6. &nbsp;
7. $lock = flock($file_pointer, LOCK_EX);
8. // 如果版本低于PHP4.0.2,9. 用 2 代替 LOCK_EX
10. &nbsp;
11. if ($lock) {
12. &nbsp;
13. fwrite($file_pointer, "what u wanna write");
14. flock($file_pointer, LOCK_UN);
15. // 如果版本低于PHP4.0.2,16. 用 3 代替 LOCK_UN
17. &nbsp;
18. }
19. &nbsp;
20. fclose($file_pointer);
21. &nbsp;
22. print "数据成功写入文件";
23. &nbsp;
24. ?>
25. &nbsp;


虽然"w"模式用来覆盖文件, 单我觉得不适用。
PHP代码:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/41007051cd10a901d1afa60d253f83f2.html