Mở và đóng một file trong PHP
Mở file
Cú pháp: fopen($path, $mode);
Trong đó:
$path
là đường dẫn tới file.$mode
là thuộc tính.
Thuộc tính bao gồm các quyền hạn cho phép thao tác trên file đó như thế nào:
r
: Read Only.r+
: Read – Write.w
: Write Only, nếu file không tồn tại sẽ tạo một file mớiw+
: Write – Read, nếu file không tồn tại sẽ tạo một file mới.a
: append – chỉ ghi. Nếu file tồn tại sẽ ghi tiếp vào phần dưới của nội dung.a+
: append – đọc và ghi. Nếu file tồn tại sẽ ghi tiếp vào phần dưới của nội dung, nếu file không tồn tại sẽ tạo file mới.b
: Mở file dưới dạng file binary ( nhị phân ).
Đóng file
Cú pháp: fclose(file vừa mở);
Ví dụ
<?php $fp = fopen("PHP.txt", "r") or exit ("Can't find this file");
fclose(fp); ?>
Đọc file
Có 3 cách đọc file thông dụng trong PHP:
- Đọc file từng kí tự
- Đọc file từng dòng
- Đọc hết file
Đọc file từng kí tự
Dùng hàm fgetc($fp)
để đọc file theo từng kí tư.
<?php $fp = fopen('PHP.txt', "r"); // Kiểm tra file mở thành công không if (!$fp) { echo "Can't open file"; } else { // Lặp qua từng ký tự để đọc while(!feof($fp)) { echo fgetc($fp); } } ?>
Đọc file từng dòng
Để đọc file từng dòng dùng hàm fgets($fp)
.
<?php $fp = fopen('PHP.txt', "r"); if (!$fp) { echo "Can't open file"; } else { // Lặp qua từng dòng để đọc while(!feof($fp)) { echo fgets($fp); } } ?>
Đối với đọc file từng kí tự và đọc file từng dòng phải sử dụng hàm feof($fp)
đặt trong vòng lặp while
để sau khi đọc xong nó sẽ chuyển sang dòng mới hoặc kí tự mới.
Đọc hết cả file
Để đọc hết cả file dùng hàm fread($fp, $size)
.
Trong đó:
$fp
là đối tượng lúc mở file.$size
là kích cỡ của file cần đọc.
<?php $fp = fopen('PHP.txt', "r"); if (!$fp) { echo "Can't open file"; } else { // Đọc file và trả về nội dung $data = fread($fp, filesize('STDIO.txt')); echo $data; } ?>
Ghi file
Để ghi nội dung vào file dùng hàm fwrite($fp, $content)
trong đó $fp
là đối tượng trả về lúc mở file, còn $content
là nội dung muốn ghi vào. Việc ghi file phụ thuộc vào lúc mở file như thế nào. Ví dụ lúc mở file ghi đè thì lúc ghi file nó sẽ ghi đè, lúc mở file ghi kiểu append
thì lúc ghi file nó sẽ thêm xuống cuối file, nếu mở file chỉ cho đọc thì bạn không thể ghi file được.
<?php $fp = fopen('PHP.txt', "w"); if (!$fp) { echo "Can't open file"; } else { $data = 'Hello STDIO!'; fwrite($fp, $data); } ?>
Các hàm xử lí file khác
Kiểm tra file có tồn tại không?
Dùng hàm file_exists($path)
, trong đó $path
là đường dẫn đến file cần kiểm tra.
<?php if (file_exists('PHP.txt')) { echo 'File exists'; } ?>
Đổi tên file
Để đổi tên file dùng hàm rename($oldname, $newname)
, trong đó $oldname
là đường dẫn đến file cần đổi tên, $newname
là đường dẫn mới có kèm tên file cần đổi . Nếu chỉ muốn đổi tên thì đường dẫn của cả 2 biến giống nhau, chỉ khác nhau ở tên file. Nếu tên file mới bị trùng thì file đó sẽ bị ghi đè.
<?php rename('PHP.txt', 'PHP_new.txt'); ?>
Xóa file
Để xóa file dùng hàm unlink($path)
, trong đó $path
là đường dẫn đến file cần xóa.
<?php if ( file_exists('PHP.txt')) { unlink('PHP.txt'); } ?>