Thường thì rất tiện lợi khi kiểm tra xem tệp mà bạn đang cố mở có thực sự tồn tại hay không trước khi thực hiện bất kỳ xử lý nào trên nó. Nếu không, chương trình có thể sẽ phát sinh một runtime exception .
Thư viện tích hợp sẵn của PHP cung cấp một số hàm tiện ích trong vấn đề này. Một số hàm mà chúng ta sẽ thảo luận trong chương này bao gồm −
file_exists() − kiểm tra xem tệp có tồn tại hay không.
is_file() − nếu giá trị trả về bởi fopen() tham chiếu đến một tệp hoặc thư mục.
is_readable() − kiểm tra xem tệp mà bạn đã mở có cho phép đọc dữ liệu hay không.
is_writable() − kiểm tra xem việc ghi dữ liệu vào tệp có được phép hay không.
Hàm này hoạt động với cả tệp và thư mục. Nó kiểm tra xem tệp hoặc thư mục đã cho có tồn tại hay không.
file_exists(string $filename): bool
Tham số duy nhất của hàm này là một chuỗi đại diện cho tệp/thư mục với đường dẫn đầy đủ. Hàm trả về true hoặc false tùy thuộc vào việc tệp có tồn tại hay không.
Chương trình sau kiểm tra xem tệp "hello.txt" có tồn tại hay không.
<?php $filename = 'hello.txt'; if (file_exists($filename)) { $message = "The file $filename exists"; } else { $message = "The file $filename does not exist"; } echo $message; ?>
Nếu tệp tồn tại trong thư mục hiện tại, thông điệp là −
The file hello.txt exists
Nếu không, thông điệp là −
The file hello.txt does not exist
Chuỗi trỏ đến tệp có thể có đường dẫn tương đối hoặc tuyệt đối. Giả sử rằng tệp "hello.txt" có sẵn trong thư mục con "hello" nằm trong thư mục hiện tại.
<?php $filename = 'hello/hello.txt'; if (file_exists($filename)) { $message = "The file $filename exists"; } else { $message = "The file $filename does not exist"; } echo $message; ?>
Nó sẽ tạo ra output −
The file hello/hello.txt exists
Hãy thử cung cấp đường dẫn tuyệt đối như bên dưới −
<?php $filename = 'c:/xampp/htdocs/hello.txt'; if (file_exists($filename)) { $message = "The file $filename exists"; } else { $message = "The file $filename does not exist"; } echo $message; ?>
Nó sẽ tạo ra output −
The file c:/xampp/htdocs/hello.txt exists
Hàm file_exists() trả về true cho cả tệp tin và thư mục hiện có. Hàm is_file() giúp bạn xác định xem đó có phải là một tệp tin hay không.
is_file ( string $filename ) : bool
Ví dụ dưới đây cho thấy cách mà hàm is_file() hoạt động −
<?php $filename = 'hello.txt'; if (is_file($filename)) { $message = "$filename is a file"; } else { $message = "$filename is a not a file"; } echo $message; ?>
output cho biết rằng đây là một tệp tin −
hello.txt is a file
Bây giờ, hãy thay đổi "$filename" thành một thư mục, và xem kết quả −
<?php $filename = hello; if (is_file($filename)) { $message = "$filename is a file"; } else { $message = "$filename is a not a file"; } echo $message; ?>
Bây giờ bạn sẽ được thông báo rằng "hello" không phải là một tệp.
Lưu ý rằng hàm is_file() chấp nhận một $filename và trả về true chỉ khi $filename là một tệp và tồn tại.
Đôi khi, bạn có thể muốn kiểm tra trước xem tệp có thể được đọc hay không. Hàm is_readable() có thể xác định điều này.
is_readable ( string $filename ) : bool
Dưới đây là một ví dụ về cách mà hàm is_readable() hoạt động −
<?php $filename = 'hello.txt'; if (is_readable($filename)) { $message = "$filename is readable"; } else { $message = "$filename is not readable"; } echo $message; ?>
Nó sẽ tạo ra output −
hello.txt is readable
Bạn có thể sử dụng hàm is_writable() để kiểm tra xem một tệp có tồn tại hay không và liệu có thể thực hiện thao tác ghi trên tệp đã cho hay không.
is_writable ( string $filename ) : bool
Ví dụ sau đây cho thấy cách hoạt động của hàm is_writable() −
<?php $filename = 'hello.txt'; if (is_writable($filename)) { $message = "$filename is writable"; } else { $message = "$filename is not writable"; } echo $message; ?>
Đối với một tệp tin đã lưu trữ bình thường, chương trình cho biết nó có thể ghi. Tuy nhiên, hãy thay đổi thuộc tính của nó thành "read_only" và chạy chương trình. Bây giờ bạn sẽ nhận được −
hello.txt is writable