Việc xử lý file trong php rất quan trọng vì trong các ứng dụng thực tế ta hay dùng file để lưu trữ dữ cache cho website hoặc là lưu trữ một thứ gì đó để cho nhằm giúp ứng dụng chạy nhanh hơn, vì thế tôi viết bài này giúp các bạn làm quen với một số hàm liên quan đến file như đọc file, ghi file, tạo folder mới, xóa folder, xóa file.
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:
| Mode | Diễn giải | 
|---|---|
| r | Read only | 
| r+ | Read + Write | 
| w | Write only | 
| w+ | 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 | Mở dưới dạng append dữ liệu, chỉ có write 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+ | Mở dưới dạng append dữ liệu, bao gồm write và read. 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 | 
Ví dụ:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Mở một file, ta dùng dấu @ đặt trước hàm fopen// để phòng trường hợp đường dẫn $path ta truyền// vào bị sai nó sẽ không bung lỗi ra màn hình.// Đường dẫn $path có thể là đường dẫn tương đối// hoặc tuyệt đối đều được $path= 'demo.txt';$fp= @fopen($path, "r"); // Kiểm tra file mở thành công khôngif(!$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ự
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $fp= @fopen('demo.txt', "r"); // Kiểm tra file mở thành công khôngif(!$fp) {    echo'Mở file không thành công';}else{    // Lặp qua từng ký tự để đọc    while(!feof($fp))    {        echofgetc($fp);    }} | 
Ví dụ: Đọc file từng dòng
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $fp= @fopen('demo.txt', "r"); // Kiểm tra file mở thành công khôngif(!$fp) {    echo'Mở file không thành công';}else{    // Lặp qua từng dòng để đọc    while(!feof($fp))    {        echofgets($fp);    }} | 
Ví dụ: Đọc hết file
| 1 2 3 4 5 6 7 8 9 10 11 12 | $fp= @fopen('demo.txt', "r"); // Kiểm tra file mở thành công khôngif(!$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ụ:
| 1 2 3 4 5 6 7 8 9 10 11 | $fp= @fopen('demo.txt', "w"); // Kiểm tra file mở thành công khôngif(!$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.
Ví dụ:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $fp= @fopen('demo.txt', "w"); // Kiểm tra file mở thành công khôngif(!$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ụ:
| 1 2 3 4 | 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ụ:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | $fp= @fopen('demo.txt', "w"); // Kiểm tra file mở thành công khôngif(!$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ụ:
| 1 2 3 4 5 | // Lấy nội dung file txtechofile_get_contents('demo.txt'); // Lấy nội dung đường link <a href="http://www.freetuts.net/">http://www.freetuts.net</a>echofile_get_contents('<a href="http://www.freetuts.net/">http://www.freetuts.net</a>'); | 
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ụ:
| 1 | 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ụ:
| 1 | rename('demo.txt', 'demo2.txt'); | 
Copy file
Để copy sang file mới ta dùng hàm copy($source, $dest), trong đó $source là path file cần copy và $dest 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 $dest bạn khai báo một cái tên khác.
Ví dụ:
| 1 2 3 4 | 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ụ:
| 1 2 3 4 | 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ụ:
| 1 2 3 | 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ụ:
| 1 2 3 4 | // Kiểm tra folder parent chưa có chưa, nếu có thì tạo folder conif(is_dir('parent/sub')){    mkdir('parent/sub');} | 
6. Lời kết
Trên là những hàm xử lý file hay dùng. Cảm ơn đã theo dõi bài viết.
Theo:freetuts.net
 
                                       


 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
															
							 
                             
             
            
 Vietnamese
 Vietnamese Afrikaans
 Afrikaans Albanian
 Albanian Amharic
 Amharic Arabic
 Arabic Armenian
 Armenian Azerbaijani
 Azerbaijani Basque
 Basque Belarusian
 Belarusian Bengali
 Bengali Bosnian
 Bosnian Bulgarian
 Bulgarian Catalan
 Catalan Cebuano
 Cebuano Chichewa
 Chichewa Chinese (Simplified)
 Chinese (Simplified) Chinese (Traditional)
 Chinese (Traditional) Corsican
 Corsican Croatian
 Croatian Czech
 Czech Danish
 Danish Dutch
 Dutch English
 English Esperanto
 Esperanto Estonian
 Estonian Filipino
 Filipino Finnish
 Finnish French
 French Frisian
 Frisian Galician
 Galician Haitian Creole
 Haitian Creole Georgian
 Georgian German
 German Greek
 Greek Gujarati
 Gujarati Hausa
 Hausa Hawaiian
 Hawaiian Hebrew
 Hebrew Hindi
 Hindi Hmong
 Hmong Hungarian
 Hungarian Icelandic
 Icelandic Igbo
 Igbo Indonesian
 Indonesian Irish
 Irish Italian
 Italian Japanese
 Japanese Javanese
 Javanese Kannada
 Kannada Kazakh
 Kazakh Khmer
 Khmer Korean
 Korean Kurdish (Kurmanji)
 Kurdish (Kurmanji) Kyrgyz
 Kyrgyz Lao
 Lao Latin
 Latin Latvian
 Latvian Lithuanian
 Lithuanian Luxembourgish
 Luxembourgish Macedonian
 Macedonian Malagasy
 Malagasy Malay
 Malay Malayalam
 Malayalam Maltese
 Maltese Maori
 Maori Marathi
 Marathi Mongolian
 Mongolian Myanmar (Burmese)
 Myanmar (Burmese) Nepali
 Nepali Norwegian
 Norwegian Pashto
 Pashto Persian
 Persian Polish
 Polish Portuguese
 Portuguese Punjabi
 Punjabi Romanian
 Romanian Russian
 Russian Samoan
 Samoan Scottish Gaelic
 Scottish Gaelic Sinhala
 Sinhala Serbian
 Serbian Sesotho
 Sesotho Shona
 Shona Sindhi
 Sindhi Slovenian
 Slovenian Slovak
 Slovak Somali
 Somali Spanish
 Spanish Sundanese
 Sundanese Swahili
 Swahili Swedish
 Swedish Tajik
 Tajik Tamil
 Tamil Telugu
 Telugu Thai
 Thai Turkish
 Turkish Ukrainian
 Ukrainian Urdu
 Urdu Uzbek
 Uzbek Welsh
 Welsh Xhosa
 Xhosa Yiddish
 Yiddish Yoruba
 Yoruba Zulu
 Zulu