PHP – Open, Read, Close một File

Trong bài này, chúng ta sẽ được học về mở, đọc và đóng file trên server.

Open File – fopen()

Một các tốt hơn đở mở file là hàm fopen(). Hàm này có nhiều tùy chọn hơn hàm readfile().

Chúng ta sẽ sử dụng file “webdictionary.txt” trong bài này.

AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language

Tham số đầu tiên của fopen() là tên file cần mở, tham số thứ 2 là chế độ mở file. Ở ví dụ sau, sẽ thông báo ra lỗi nếu hàm fopen không thể mở file.

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>

Bạn có thể mở file ở một trong những chế độ sau:

Modes Description
r Mở file chỉ để đọc. Con trỏ bắt đầu ở đầu file
w Mở file chỉ để ghi. Xóa nội dung của file hoặc tạo một file mới nếu file không tồn tại. Con trỏ bắt đầu ở đầu file
a Mở file chỉ để ghi. Dữ liệu hiện có trong file được bảo toàn. Con trỏ file bắt đầu ở cuối của file. Tạo một file mới nếu file không tồn tại
x Tạo ra một file mới chỉ để ghi. Trả về FALSE và lổi nếu file đã tồn tại
r+ Mở một file để đọc / ghi. Con trỏ bắt đầu ở đầu file
w+ Mở một file để đọc / ghi. Xóa nội dung của file hoặc tạo một file mới nếu file không tồn tại. Con trỏ bắt đầu ở đầu file
a+ Mở một file để đọc / ghi. Dữ liệu hiện có trong file được bảo toàn. Con trỏ bắt đầu ở cuối của file. Tạo một file mới nếu file không tồn tại
x+ Tạo ra một file mới để đọc / ghi. Trả về FALSE và lổi nếu file đã tồn tại

Read File – fread()

Hàm fread() có chức năng đọc một file được mở.

Tham số đầu tiên của fread() chứa tên file, tham số thứ 2 chứa số bytes tối đa để đọc.

fread($myfile,filesize("webdictionary.txt"));

Close File – fclose()

Hàm fclose() dùng để đóng 1 file đang mở.

Một ứng dụng web tối ưu cần đóng các file sau khi đã sử dụng xong để giải phóng tài nguyên.

fclose() yêu cầu tham số tên file muốn đóng.

<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>

Đọc một dòng của file – fgets()

fgets() dùng để đọc một dòng của file.

Ví dụ dưới đây sẽ xuất ra dòng đầu tiên của file

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>

Chú ý, sau khi gọi fgets(), con trỏ của file sẽ duy chuyển sang dòng kế tiếp.

Kiểm tra End-Of-File – feof()

Hàm feof() kiểm tra xem nếu “end-of-file” (EOF) đã tới chưa.

Hàm feof() dùng trong vòng lặp nếu chưa xác định được đồ dài.

Ví dụ sau đọc file theo từng dòng, cho đến khi kết thúc.

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one line until end-of-file
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>

Đọc từng ký tự của file – fgetc()

Hàm fgetc() dùng để đọc 1 ký tự của file

Ví dụ sau đọc file “webdictionary.txt” theo từng ký tự cho đến khi kết thúc.

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);
?>

Chú ý: sau khi gọi hàm fgetc(), con trỏ của file sẽ duy chuyển sang ký tự kế tiếp.