PHP中提供了一多元的I/O函数,作者改成了''/''
分类:热门新闻

成立相近../../../xxx/xxx.txt的目录都很好!

PHP中文件读写操作

function mkdirs($path, $mode = 0777) //creates directory tree recursively { $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 count($dirs) - $subamount; $c++) { $thispath=; for ($cc=0; $cc = $c; $cc++) { $thispath.=$dirs[$cc].''/''; } if (!file_exists($thispath)) { //print $thispathbr; mkdir($thispath,$mode); } } }

  PHP中提供了一多元的I/O函数,能当机立断地落到实处大家所须求的作用,包含文件系统操作和目录操作(如“复制[copy]”)。上边给我们介绍的是着力的文书读写操作:(1)读文件;(2)写文件;(3)追加到文件。

原函数中动用$GLOBALS[dirseparator]自个儿改成了''/''

  以下是一篇关于文件中央读写操作的稿子,作者一度正是看了那篇小说后学会文件基本操作的,在此发出去与我们分享:
读文件:
PHP代码:
1.    <?php 
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.     

function recur_mkdirs($path, $mode = 0777) //creates directory tree recursively { //$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; } for ($c=0;$c count($dirs) - $subamount; $c++) { $thispath=; for ($cc=0; $cc = $c; $cc++) { $thispath.=$dirs[$cc].$GLOBALS[dirseparator]; } if (!file_exists($thispath)) { //print $thispathbr; mkdir($thispath,$mode); } }

}

写文件:
PHP代码:
1.    <?php 
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.    <?php 
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写入罗布的音讯到文件的时候,Bill正巧也开首写入,当时恰巧须求写入罗布纪录的'n',引起文件破坏。

作者们本来不希望发生那样的情况, 所以让大家看看文件锁定:
PHP代码:
1.    <?php 
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.    <?php 
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.    <?php 
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 < count($dirs) - $subamount; $c++) { 
$thispath=""; 
for ($cc=0; $cc <= $c; $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; 

那一个只是某些中坚的有关文件的操作代码,相信对初读书人很有用,在这里贴出来,希望有投砾引珠之效果!

本文由威尼斯在线注册平台发布于热门新闻,转载请注明出处:  PHP中提供了一多元的I/O函数,作者改成了''/''

上一篇:PHP动态网页程序优化及高速提速问题 下一篇:设置缩略图边框
猜你喜欢
热门排行
精彩图文