PHP中filesystem函數

一、文件處理

1. 打開文件:resouce fopen()

2. 關閉文件:bool fclose()

3. 讀寫文件:

  • 讀取整個文件:int readfile()、array file() 和 string file_get_contents( )
  • 讀取一行數據:string fgets( ),如果有一個參數表示當前指針後面所有內容,如果有兩個參數,第二個參數表示需要獲取字節長度 和 string fgetss( )會過濾掉html和php標記
  • 讀取一個字符:string fgetc( )
  • 讀取指定長度的字串:string frend( )

4. 寫文件

  • fwrite( ) 函數也稱爲fputs( ),它們用法相同。int fwrite( )
  • file_put_contents( ) 函數 int file_put_contents( )

5. 複製文件:bool copy( )

6. 重命名:bool rename( )

7. 刪除文件:bool unlink( )

8. 文件最後一次被訪問的時間:int fileatime( ),時間戳的方式返回。

9. 文件最後一次被修改的事件:int filemtime( ),時間戳的方式返回。

10. 取得文件大小(bytes):int filesize( )

11. 包含文件name的路徑信息:array pathinfo(string name{,int options] );

12. 返回文件filename絕對路徑:string realpath( )

13. 返回一個數組,包括文件的相關信息,如文件大小、最後修改時間等:array stat( )

在讀寫文件時,除了file()、readfile()等少數幾個函數外,其他操作必須要先使用fopen()函數打開文件,最後用fclose()函數關閉文件。文件信息函數(如filesize、filemtime等)則都不需要打開文件,只要文件存在即可。

二、目錄處理(目錄是一種特殊的文件)

1. 打開目錄:resource opendir( )

2. 關閉目錄:void closedir( )

    is_dir( )函數判斷當前路徑是否爲一個合法的目錄。如果合法返回true,否則返回false。

3. 瀏覽目錄:array scandir( );

4. 新建目錄:bool mkdir( )

5. 刪除目錄:bool rmidr( )

6. 取得當前工作目錄:string getcwd(void)

7. 改變當前目錄:bool chdir( );

8. 返回目錄中的可用空間(bytes),被檢查的目錄必須通過服務器的文件系統訪問:float disk_free_space()

9. 返回目錄的總空間大小:float disk_total_space()

10. 返回目錄下一個文件的文件名(使用此函數時,目錄必須是使用opendir()函數打開的):string readdir( )

11. 將指定的目錄重新指定到目錄的開頭:void rewinddir( )

三、文件處理的高級應用

1. 遠程文件的訪問

PHP支持URL格式的文件調用,只要在php.ini中allow_url_fopen選項設爲ON。

如:fopen('http://127.0.0.1/tm/sl/index.php', 'rb');

2. 文件指針

PHP可以實現文件指針的定位及查詢,從而實現所需信息的快速查詢。文件指針函數有rewind( )、fseek() 、feon() 和ftell()。

- rewind()函數:該函數將文件handle的指針設爲文件流的開頭

            語法:bool rewind( );如果將文件以追加("a")模式打開,寫入文件的任何數據總是會被附加在文件已有內容的末尾,不論文件指針的位置在何處。

- fseek() 函數:該函數實現文件指針的定位

              語法:int fseek();

- feof() 函數:該函數判斷文件指針是否在文件尾

               語法:bool feof( );

- ftell() 函數:該函數返回當前指針位置

                語法:int ftell( );

$filename = "test.txt";  
if(is_file($filename)){  // 判斷文件是否存在
    echo "文字總字節數:".filesize($filename)."<br>";
    $fopen = fopen($filename, 'rb');
    echo "初始指針位置:".ftell($fopen)."<br>";
    fseek($fopen, 22);   //移動指針
    echo "使用fseek函數後指針位置:".ftell($fopen)."<br>";
    echo "輸出當前指針後面的內容".fgets($fopen)."<br>";
    if(feof($fopen)){  //判斷指針是否指向文件末尾
        echo "當前指針指向文件末尾:".ftell($fopen)."<br>"; //如果指針在末尾則輸出指針位置
        rewind($fopen);
        echo "使用rewind函數後指針的位置:".ftell($fopen)."<br>";
        echo "輸出前22個字節的內容:".fgets($fopen, 22);
        fclose($fopen);
    }else {
        echo "文件不存在";
    }

}

3. 鎖定文件

在向一個文本文件寫入內容時,需要先鎖定該文件,以防止其他用戶同時修改此文件內容,使用flock() 函數

語法:boll flock(resource handle, int operation)

operation的參數值
參數值 說明
LOCK_SH 取得共享鎖定(讀取文件)
LOCK_EX 取得獨佔鎖定(寫入文件)
LOCK_UN 釋放鎖定
LOCK_NB 防止flock() 在鎖定時堵塞

四、上傳文件

1. 配置php.ini文件

  • file_uploads:值爲on,說明服務器支持文件上傳,off則不支持。
  • upload_tep_dir:上傳文件臨時目錄。如果想要指定爲,可在這裏設置,否則使用系統默認目錄即可。
  • upload_max_filesize:服務器允許上傳的文件的最大值,以MB爲單位。系統默認爲2MB。
  • max_execution_time:PHP中一個指令所能執行的最長時間,單位爲秒。
  • memory_limit:PHP中一個指令所分配的內存空間,單位是MB。

2. 預定義變量$_FILES

預定義變量$_FILES元素
元素名 說明
$_FILES[filename][name] 存儲了上傳文件的文件名
$_FILES[filename][size] 存儲了文件大小,單位爲字節
$_FILES[filename][tmp_name] 文件上傳時,首先在臨時目錄中被保存成一個臨時文件。該變量爲臨時文件名
$_FILES[filename][type] 上傳文件的類型
$_FILES[filename][error] 存儲了上傳文件的結果。如果值爲0,說明上傳成功。

3. 文件上傳函數:將上傳文件存儲到指定的位置。成功返回true,否則返回false。

語法:bool move_uploaded_file(string filename, string destination)

參數:filename是上傳文件的臨時文件名,即$_FILES[tmp_name];

           destination是上傳後保存的新的路徑和名稱

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章