国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php 檔案常用函數(shù)和常數(shù)

檔案運算的常數(shù)

下面這一個常數(shù)是最常用的。是檔案目錄的分割符的常數(shù)。

我們來看看格式:

平臺#分割符號
windows\
類別unix/

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

我們會使用到一個常數(shù):
DIRECTORY_SEPARATOR

我們來寫一個小的實例,定義目前檔案所在的路徑:

由於FILE是PHP的預先定義常數(shù),所以沒辦法改變,如果需要讓FILE也自適應作業(yè)系統(tǒng)。
那麼就是不要用FILE,可以用自訂的常數(shù),並且把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指定長度的資料在先前讀取。讀取指定長度的內(nèi)容,下次再讀取的時候從原始位置開始再接著向後讀取。

document_2015-09-08_55eecf3c2a7e0.png

如上圖,我們可以想像:

????1.檔案剛打開的時候讀到的是紅色的圖示

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

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

我們在demo.txt檔案中寫入一批檔案:

abcdeefghijklk
opqrst
uvwxyz
12345678

我們可開始來實驗一次。

<?php
$fp = fopen('demo2.txt', 'r+');
//讀取10個字符
echo fread($fp,10);

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

上面的例子,你會發(fā)現(xiàn)fseek指定多長就移動多少個位元組。而rewind每次都是回到文件的起點。

那要如何移動到最末端呢?我們可以統(tǒng)計位元組數(shù)。在fseek的時候直接移到回後。

下面我們來講filesize統(tǒng)計位元組數(shù)。

filesize 偵測檔案的大小

<?php


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

?>

其實它操作檔的函數(shù)

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

函數(shù)名稱功能
#file把整個檔案讀入一個陣列中
fgets從檔案指標中讀取一行,讀到最後回傳false
fgetc從檔案指標讀取一個字符,讀到最後回傳false
#ftruncate將檔案截斷到給定的長度

我們透過一個實例來把上面幾個函數(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)容。

檔案的時間函數(shù)

#函數(shù)功能說明
filectime檔案建立時間
#filemtime檔案修改時間
fileatime檔案上次存取時間
#
<?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)); } ?>