PHP递归创建目录函数

创建相通../../../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写入罗布的音讯到文件的时候,比尔凑巧也最早写入,那个时候正巧须求写入Rob纪录的’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; 

那么些只是部分大旨的关于文件的操作代码,相信对初读书人很有用,在那贴出来,希望有投砾引珠之功用!

发表评论

电子邮件地址不会被公开。 必填项已用*标注