X

PHP: 讀取檔案 fgets 和 fread 的差異

程式在寫時, 何時要用 fgets? 何時要用 fread? 主要的差異在哪邊? 以下就用簡單的範例來說明~

先建立一個檔案: /tmp/readfile.txt, 內容如下:

abcdefg
123456789

寫兩隻簡單的小程式:

fgets 版

<?php
$handle = fopen('/tmp/readfile.txt', "r");
$contents = '';
if ($handle) {
    while (!feof($handle)) {
        $contents = fgets($handle, 10);
        echo $contents;
        exit;
    }
    fclose($handle);
}
?>

執行得到的內容:

abcdefg

fread 版

<?php
$handle = fopen('/tmp/readfile.txt', "r");
$contents = '';
if ($handle) {
    while (!feof($handle)) {
        $contents .= fread($handle, 10);
        echo $contents;
        exit;
     }
    fclose($handle);
}
?>

執行得到的內容:

abcdefg
12

fgets 和 fread 主要的差異

  • fgets 是 一次讀一行 (Gets a line from file pointer.)
  • fread 會把整個檔案都讀出來, 然後再去看要抓多少 bytes.

所以 fgets 讀到的是第一行到結束(後面參數不加, 就會讀到此行結束), fread 讀到的是 "abcdefg\n12" (\n 算一個 bytes), 就是看到的結果囉~

使用的時機就自行看情況囉~ 若讀的檔案太大, 建議使用 fgets. 🙂

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post