Hàm fread

Hàm fread trong PHP được dùng để đọc nội dung tập tin.

Hàm fread được sử dụng kết hợp với hàm fopen:

$handle = fopen(...);
$content = fopen($handle, $length);

Ở trên đối số thứ hai $length truyền vào hàm fread ở trên nhận giá trị là một số nguyên dương được dùng để xác định số lượng dữ liệu theo bytes sẽ được đọc từ tập tin.

Đọc Tập Tin Văn Bản

Sử dụng hàm fread để đọc 10 bytes dữ liệu đầu tiên từ tập tin văn bản text.txt:

$handle = fopen("/tmp/text.txt", "r");
$content = fread($handle, 10);
echo $content;

Ngoài ra nếu muốn đọc toàn bộ nội dung tập tin bạn có thể sử dụng hàm filesize:

$filePath = "/tmp/text.txt";

// Đếm số bytes dữ liệu trong tập tin
$bytesCount = filesize($filePath);

// Mở tập tin
$handle = fopen($filePath, "r");

// Đọc toàn bộ nội dung tập tin
$content = fread($handle, $bytesCount);

echo $content;

Đọc Tập Tin Nhị Phân

Việc sử dụng hàm fread để đọc 10 bytes dữ liệu đầu tiên từ tập tin nhị phân (binary file) trên Linux không có gì khác so với đọc tập tin văn bản:

$filePath = "/tmp/funny.gif";
$handle = fopen($filePath, "r");
$contents = fread($handle, filesize($filePath));
fclose($handle);

Tuy nhiên trên Windows bạn cần sử dụng thêm chế độ b khi mở tập tin nhị phân:

$filePath = "C:\\xampp\\htdocs\\tmp\\funny.gif";
$handle = fopen($filePath, "rb");
$contents = fread($handle, filesize($filePath));
fclose($handle);

Đọc Từ Một Địa Chỉ URL

Ví dụ dưới đây sử dụng fread để đọc lần lượt từng 8192 bytes dữ liệu lấy từ một địa chỉ URL:

$handle = fopen("http://www.example.com/", "rb");

if ($handle === FALSE) {
    die("Lỗi khi mở được địa chỉ URL");
}

$contents = "";

while (!feof($handle)) {
    $contents .= fread($handle, 8192);
}

echo $contents;

Đóng Tập Tin Đang Mở

Sau khi kết thúc việc đọc nội dung tập tin chúng ta nên đóng tập tin đang được mở (bằng hàm fopen).

Việc này được thực hiện nhờ sử dụng hàm fclose:

$handle = fopen("/tmp/text.txt", "r");
$content = fread($handle, 10);
echo $content;
fclose($handle);
Content must not be empty

Related Tutorial