亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

文件常用函數(shù)的常量

下面這一個常量是最常用的。是文件目錄的分割符的常量。

我們來看看格式:


QQ截圖20161009110829.png


windows 的路徑格式為 d:xxxxxx 注意:windows支持 d:/xxx/xxx
linux 的路徑格式為 /home/xxx/xxx 注意:如果homexxxxxx 在linux上是錯誤的
所以當你開啟轉(zhuǎn)義之類的話,轉(zhuǎn)義字符 用一起的話 d:xxxxxx 是一樣的。判斷時候有兩個 有的話 再轉(zhuǎn)成一個 再把 替換成 /當路徑分割,這樣在linux上或者windos上的路徑就能保持統(tǒng)一了。

我們會使用到一個常量:
DIRECTORY_SEPARATOR

我們來寫一個小的實例,定義當前文件所在的路徑:

由于FILE是PHP的預定義常量,所以沒辦法改變,如果需要讓FILE也自適應操作系統(tǒng)。
那么就是不要用FILE,可以用自定義的常量,并且把FILE處理一下,如下:

<?php
$_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__);
define('__CUR_FILE__', $_current_file);
 echo __CUR_FILE__;
 ?>

文件指針操作函數(shù)

rewind ( resource handle)

功能:指針回到開始處

fseek ( resource handle, int offset [, int from_where])
功能:文件指針向后移動指定字符

我們在之前的讀取當中我們發(fā)現(xiàn)fread讀取指定長度的數(shù)據(jù)。讀取指定長度的內(nèi)容,下次再讀取的時候從原位置開始再接著向后讀取。

? ? ? ?QQ截圖20161009110843.png ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

如上圖,我們可以想象:

1.???? 文件剛打開的時候讀取到的是紅色的圖標

2.???? 文件假色從A讀取到了C

3.???? 下次打開的時候可再從C綠色箭頭處開始讀取。

我們在demo.txt文件中寫入一批文件:

abcdeefghijklk
opqrst
uvwxyz
12345678

我們可開始來實驗一次。

<?php
$fp = fopen('output.txt', 'r+');
//讀取10個字符
echo fread($fp,10);
 
//指針設置回到開始處
rewind($handle);
//再讀取10次看看輸出的是什么
echo fread($fp,10);
 
//文件指針向后移動10個字符
echo fseek($fp,10);
 
//再看看文件中輸出的是什么
echo fread($fp,10);
 
fclose($handle);
?>

上面的例子,你會發(fā)現(xiàn)fseek指定多長就移動多少個字節(jié)。而rewind每次都是回到文件的開始處。

那如何移動到最末尾呢?我們可以統(tǒng)計字節(jié)數(shù)。在fseek的時候直接移到回后。

下面我們來講filesize統(tǒng)計字節(jié)數(shù)。

filesize 檢測文件的大小

<?php
 
 
$filename = 'demo.txt';
echo $filename . '文件大小為: ' . filesize($filename) . ' bytes';
 
?>

其它操作文件的函數(shù)

其實還有一些其他操作文件的函數(shù),讀取文件


QQ截圖20161009110857.png

? ?


我們通過一個實例來把上面幾個函數(shù)都用到。

我們在demo.txt文件中寫入一批文件:

abcdeefghijklk
opqrst
uvwxyz
12345678

<?php
 
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
 
//你分發(fā)現(xiàn)每次只讀一個字符
echo  fgetc($fp);
 
//我要全部讀取可以,讀取一次將結(jié)果賦值一次給$string
while($string = fgetc($fp)){
 
    echo $string;
 
}
?>

fgets每次打開一行:

<?php
 
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
 
//你分發(fā)現(xiàn)每次只讀一個字符
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
 
?>

上面的代碼,你會發(fā)現(xiàn)每次讀取一次打開一行。讀取最后返回的是false。

我們接下來看文件截取函數(shù):

<?php
 
//打開我們上面的demo.txt文件
$file = fopen("demo.txt", "a+");
 
//你可以數(shù)數(shù)20個字有多長,看看是不是達到效果了
echo ftruncate($file,20);
fclose($file);
?>

上例中我們發(fā)現(xiàn),截取多長就能顯示多長的內(nèi)容。

QQ截圖20161009111024.png

? ?

<?php
 
$filename = 'demo.txt';
 
if (file_exists($filename)) {
    echo "$filename文件的上次訪問時間是: " . date("Y-m-d H:i:s", fileatime($filename));
 
    echo "$filename文件的創(chuàng)建時間是: " . date("Y-m-d H:i:s", filectime($filename));
 
     echo "$filename文件的修改時間是: " . date("Y-m-d H:i:s", filemtime($filename));
}
?>

?


繼續(xù)學習
||
<?php $filename = 'demo.txt'; if (file_exists($filename)) { echo "$filename文件的上次訪問時間是: " . date("Y-m-d H:i:s", fileatime($filename)); echo "$filename文件的創(chuàng)建時間是: " . date("Y-m-d H:i:s", filectime($filename)); echo "$filename文件的修改時間是: " . date("Y-m-d H:i:s", filemtime($filename)); } ?>
提交重置代碼