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写入罗布的新闻到文件的时候,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,$modeState of Qatar; //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; 

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

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图