[PHP] Làm việc với file và các hàm xử lý file trong PHP

Đăng bởi: Admin | Lượt xem: 1770 | Chuyên mục: PHP

Trong dự án thực tế chúng ta hay phải làm việc với file để lưu trữ ảnh, tệp tin hoặc lưu trữ dữ cache cho website để giúp website chạy nhanh hơn. Vì thế những thao tác với file là rất quan trong trong lập trình. Chính vì vậy trong bài viết này vncoder.vn sẽ hướng dẫn và giới thiệu một số hàm xử lý file thông dụng trong PHP


1. Mở file

Để mở một file ta dùng cú pháp sau: open($path, $option). Trong đó $path là đường dẫn đến file cần mở, $option là quyền cho phép thao tác trên file.

Ta có danh sách các quyền sau:

  • r: Mở file chỉ để đọc.
  • w: Mở file chỉ để ghi. Xóa đi nội dung cũ hoặc tạo ra file mới nếu file không tồn tại.
  • a: Mở file chỉ để ghi.
  • x: Tạo file mới chỉ để ghi.
  • r+: Mở file để đọc và ghi.
  • w+: Mở file để đọc và ghi. Xóa đi nội dung cũ hoặc tạo ra file mới nếu file không tồn tại.
  • a+: Mở file để đọc và ghi. Tạo ra file mới nếu file không tồn tại.
  • x+: Tạo file mới để đọc và ghi.

Ví dụ:

$path = 'demo.txt';
$fp = @fopen($path, "r");
  
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else{
    echo 'Mở file thành công';
}

2. Đọc file

Có 3 cách đọc file thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file.

Ta dùng hàm fgetc($fp) để đọc theo từng ký tự, dùng fgets($fp) để đọc theo từng dòng. Đối với đọc từng dòng và đọc từng ký tự ta phải 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 tất cả file ta dùng hàm fread($fp, $size), trong đó $fp là đối tượng lúc mở file còn $size là kích cỡ của file cần đọc. Để lấy kích cỡ của file cần đọc ta dùng hàm filesize($path).

Ví dụ: Đọc file từng ký tự

$fp = @fopen('demo.txt', "r");
  
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Lặp qua từng ký tự để đọc
    while(!feof($fp))
    {
        echo fgetc($fp);
    }
}

Ví dụ: Đọc file từng dòng

$fp = @fopen('demo.txt', "r");
  
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Lặp qua từng dòng để đọc
    while(!feof($fp))
    {
        echo fgets($fp);
    }
}

Ví dụ: Đọc hết file

$fp = @fopen('demo.txt', "r");
  
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Đọc file và trả về nội dung
    $data = fread($fp, filesize('demo.txt'));
    echo $data;
}

3. Ghi file

Để ghi nội dung vào file ta 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 bạn mở file như thế nào. Ví dụ lúc bạn mở file ghi đè thì lúc ghi file nó sẽ ghi đè, lúc bạn mở file ghi kiểu append thì lúc ghi file nó sẽ thêm xuống cuối file, nếu bạn mở file chỉ cho đọc thì bạn không thể ghi file được.

Ví dụ:

$fp = @fopen('demo.txt', "w");
  
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    $data = 'freetuts.net file functions tutorial';
    fwrite($fp, $data);
}

4. Đóng File

Việc mở file để sử dụng mà không đóng file rất nguy hiểm, vì thế sau khi sử dụng xong bạn nên đóng file để an toán hơn. Để đóng file ta dùng hàm fclose($fp) trong đó $fp là đối tượng trả về lúc bạn mở file.

$fp = @fopen('demo.txt', "w");
  
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    $data = 'freetuts.net file functions tutorial';
    // Ghi file
    fwrite($fp, $data);
  
    // Đóng file
    fclose($fp);
}

5. Các hàm xử lý file khác

Sau đây là một số hàm xử lý file khác.

Kiểm tra file có tồn tại không

Ta dùng hàm file_exists($path), trong đó $path là đường dẫn đến file cần kiểm tra, ví dụ:

if (file_exists('demo.txt'))
{
    echo 'File tồn tại';
}

Kiểm tra file có được cấp quyền ghi không

a dùng hàm is_writable($path) trong đó $path là đường dẫn đến file cần kiểm tra .

Ví dụ:

$fp = @fopen('demo.txt', "w");
  
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    if (is_writable ('demo.txt')){
        fwrite($fp, 'Welcome');
    }
    fclose($fp);
}

Lấy nội dung một file mà không cần dùng hàm fread

Ta dùng hàm file_get_contents($path) để lấy nội dung của một file, trong đó $path là đường dẫn đến file cần lấy. $path có thể là đường link đến một trang web trên internet thì nó sẽ trả về nội dung html của trang web đó.

Ví dụ:

// Lấy nội dung file txt
echo file_get_contents('demo.txt');
  
// Lấy nội dung đường link http:https://vncoder.vn/
echo file_get_contents('https://vncoder.vn/');

Ghi nội dung file mà không cần dùng hàm fwrite

Trước khi dùng hàm này bạn nên dùng hàm is_writable để kiểm tra file có được phép ghi không.

Ta dùng hàm file_put_contents($path, $noidung) để ghi nội dung cho một file, trong đó $path là đường dẫn đến file cần ghi, $noidung là nội dung bạn muốn ghi vào file.

Ví dụ:

file_put_contents('demo.txt', 'noi dung');

Đổi tên file

Để đổi tên file ta 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 bạn chỉ muốn đổi tên thôi thì đường dẫn của cả 2 biến giống nhau, chỉ khác nhau ở cái tên file. Nếu tên file mới bị trùng thì file đó sẽ bị ghi đè.

Ví dụ:

rename('demo.txt', 'demo2.txt');

Copy file

Để copy sang file mới ta dùng hàm copy($source, $test), trong đó $soure là path file cần copy và $test là path file cần di chuyển tới. Nếu bạn muốn đổi luôn tên thì đường dẫn $test bạn khai báo một cái tên khác.

Ví dụ:

if (!copy('demo2.txt', 'demo3.txt'))
{
    echo 'Copy thất bại';
}

Xóa file

Ta dùng hàm unlink($path) để xóa file, trong đó $path là đường dẫn đến file cần xóa, ví dụ:

if (file_exists('demo.txt'))
{
    unlink('demo.txt');
}

Kiểm tra một đường dẫn folder có tồn tại không

Ta dùng hàm is_dir($filename), trong đó $filename là đường dẫn đến folder cần kiểm tra.

Ví dụ:

if(is_dir('system')){
    echo 'Folder Tồn Tại';
}

Tạo một folder mới

Ta dùng hàm mkdir($path) để tạo folder mới, trong đó $path là đường dẫn đến folder cần tạo. Bạn lưu ý folder cuối cùng chính là tên folder bạn cần tạo và tất cả các folder trước nó bạn chắc chắn là phải có, nếu không sẽ bị lỗi.

Ví dụ:

// Kiểm tra folder parent chưa có chưa, nếu có thì tạo folder con
if(is_dir('parent/sub')){
    mkdir('parent/sub');
}

6. Kết luận

Vậy là vncoder.vn đã giới thiệu toàn bộ những thao tác và hàm cơ bản khi làm việc với file trong PHP. Hy vọng bài viết sẽ có ích cho bạn, chúc bạn thành công!.

7. Xem thêm

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: PHP

Xây dựng Website PHP theo MVC
Số bài học:
Lượt xem: 28079
Đăng bởi: Admin
Chuyên mục: PHP

Học lập trình PHP cơ bản
Số bài học:
Lượt xem: 19227
Đăng bởi: Admin
Chuyên mục: PHP