Vấn đề xử lý file trong PHP rất quan trọng trong trường hợp các bạn muốn làm một số chức năng như cache hay log file,…Bài viết hôm nay mình sẽ giới thiệu với mọi người danh sách các hàm xử lý file trong PHP.
Xem Thêm:
- Bài 5: Toán Tử Trong PHP
- Bài 6: Câu Điều Kiện if else Trong PHP
- Bài 7: Câu Lệnh Switch Case Trong PHP
1. Mở file
Để mở file trong PHP chúng ta dùng hàm fopen với cú pháp:
fopen(command, mode)
Trong đó:
- command là đường dẫn đến file các bạn muốn mở.
- mode là quyền truy cập vào file.
Danh sách các quyền truy cập vào file:
Mode | Chú thích |
---|---|
r | Chỉ được đọc (Read only) |
r+ | Được quyền đọc và ghi (Read + write) |
w | Chỉ được viết (write only) |
w+ | Được quyền đọc và viết (write + read). Nếu file này tồn tại thì nội dung cũ sẽ bị xóa đi và ghi lại nội dung mới, còn nếu file chưa tồn tại thì nó tạo file mới |
a | Được quyền viết và nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới |
a+ | Được quyền viết và đọc. Nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới |
b | Mở dưới dạng chế độ binary |
VD:
// dùng @ để ngăn chặn thông báo lỗi khi sai đường dẫn file $file = @fopen('data.txt', 'r'); if (!$file) echo "Mở file không thành công"; else echo "Mở file thành công";
2. Đọc File
Trong PHP thông thường chúng ta sẽ đọc file bằng 3 cách sau đây:
2.1 Đọc từng ký tự
Trong PHP chúng ta sử dụng hàm feof
để kiểm tra xem đã ở vị trí cuối cùng của file chưa và hàm fgec
để đọc từng ký tự của file.
VD:
$file = @fopen('data.txt', 'r'); if (!$file) echo "Mở file không thành công"; else { while (!feof($file)) { // hàm feof sẽ trả về true nếu ở vị trí cuối cùng của file echo fgetc($file); // đọc ra từng ký tự trong file } }
2.2 Đọc từng dòng
Ở cách này chúng ta vẫn dùng feof
để kiểm tra xem vị trí đang duyệt đã ở cuối cùng của file chưa và dùng hàm fgets
để in ra từng dòng của file.
VD:
$file = @fopen('data.txt', 'r'); if (!$file) echo "Mở file không thành công"; else { while (!feof($file)) { // hàm feof sẽ trả về true nếu ở vị trí cuối cùng của file echo fgets($file); // đọc ra từng dòng trong file } }
Hoặc chúng ta cũng có thể dùng hàm file
để file sang dạng mảng với mỗi dòng của file là một phần tử của mảng.
$data = @file('data.txt'); // chuyển đổi file sang mảng foreach ($data as $value) { echo $value; }
2.3 Đọc hết file
Để đọc hết file trong PHP chúng ta có thể dùng hàm fread($file, $filesize)
VD:
$file = @fopen('data.txt', 'r'); if (!$file) echo "Mở file không thành công"; else { echo fread($file, filesize('data.txt'));//filesize lấy ra dung lượng của file }
3. Ghi File
Để ghi file thì bắt buộc file của bạn phải được mở ở chế độ mode có cho phép ghi file và tiếp đó dùng hàm fwrite
để ghi dữ liệu.
VD:
$file = @fopen('data.txt', 'w'); if (!$file) echo "Mở file không thành công"; else { $data = 'Tôi ghi dòng này vào file nhé!'; fwrite($file, $data); }
4. Đóng File
Trong khi code bạn luôn luôn nhớ cho mình quy chế open-closed nghĩa là mở thì phải đóng và trong file cũng thế. Trong PHP các bạn có thể dùng hàm fclose
để đóng file.
VD:
$file = @fopen('data.txt', 'w'); if (!$file) echo "Mở file không thành công"; else { $data = 'Tôi ghi dòng này vào file nhé!'; fwrite($file, $data); fclose($file); }
5. Các hàm khác
Và sau đây là một số hàm xử lý file khác.
5.1 Kiểm tra file
Trong PHP có cung xấp cho chúng ta hàm file_exists()
để kiểm tra sự tồn tại của file, hàm sẽ trả về true
nếu file tồn tại và ngược lại false
nếu không.
VD:
if(file_exists('data.txt')) echo 'file tồn tại'; else echo 'file không tồn tại';
5.2 Kiểm tra quyền ghi file
Để kiểm tra quyền ghi file chúng ta dùng hàm is_writable()
. Hàm này sẽ trả về true nếu được quyền ghi và ngược lại false nếu không được quyền ghi.
VD:
if(is_writable('data.txt')) echo 'Được phép ghi'; else echo 'không được phép ghi';
5.3 Lấy nội dung của file
Để lấy nội dung của một file chúng ta cũng có thể dùng hàm file_get_contents()
VD:
echo file_get_contents('data.txt');
5.4 Tạo thư mục
Để tạo file trong PHP chúng ta cũng có thể dùng hàm mkdir(path,mode,recursive,context)
VD:
mkdir('data.txt');
5.5 Kiểm tra thư mục
Để kiểm tra xem thư mục có tồn tại hay không thì các bạn có thể dùng hàm is_dir(path)
VD:
if(is_dir('public')) echo 'Tồn tại'; else echo 'Không tồn tại';
5.6 Đổi tên file
Để đổi tên file các bạn có thể dùng hàm rename(old,new)
.
VD: đổi tên file data.txt thành newdata.txt.
rename('data.txt', 'newdata.txt');
5.7 Copy file
Chúng ta sẽ sử dụng hàm copy(path,pathcopy)
để copy file
VD: chúng ta cần copy file data.txt sang file datacopy.txt
copy('data.txt', 'data2.txt');
5.8 Xóa file
Chúng ta dùng hàm unlink()
để xóa file.
VD:
if(unlink('data.txt')) echo 'Thành công'; else echo 'Không thành công';
5.9 Xem thêm các hàm xử lý file trong php khác
Ngoài ra các bạn có thể xem thêm các hàm khác nữa tại đây.
6. Tạm Kết
Bài viết hôm nay mình đã giới thiệu với mọi người về các hàm xử lý file trong PHP còn một phần rất quan trọng nữa là phần upload file thì mình xin phép được trình bài ở phần sau.