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);