Bài 8: XỬ LÝ
TẬP TIN VÀ THƯ MỤC

1.Tập tin

2.Upload file

3.Thư mục

Mở tập tin

Đọc tập tin

Ghi tập tin

Đóng tập tin
fclose()

Các hàm xử lý tập tin

Cú pháp:
fopen(tên_file, filemode)

Kết hợp kiểm tra file khi mở:

Phân loại các chế độ mở file:

Tham số đầu tiên chứa tên của file cần mở và tham số thứ hai chứa chế độ mở file (file mode)

Chú ý: khi mở file bằng fopen() thì tất cả nội dung trong file sẽ được gắn vào biến có tên là $f

Ví dụ: mở file hoa.txt trong thư mục
trien_khai_ung_dung/du_lieu với chế độ chỉ đọc.

<?php
$f = fopen("trien_khai_ung_dung/du_lieu/hoa.txt","r");
?>

<?php
// mở file nếu file hợp lệ, ngược lại thì thông báo lỗi
$f = fopen("hoa.txt", "r") or exit ("Không thể mở file!");
?>

r: chỉ đọc file. Bắt đầu từ đầu file

r+: đọc và ghi. Bắt đầu từ đầu file

w: chỉ ghi file. Mở và xóa toàn bộ nội dung của file đã có hoặc tạo ra file mới nếu file đó không tồn tại, sau đó ghi nội dung vào file.

w+: đọc và ghi. Mở và xóa toàn bộ nội dung của file đã có hoặc tạo ra một file mới nếu file đó không tồn tại, sau đó ghi nội dung vào file.

a: ghi và đọc dữ liệu. Mở và ghi nội dung vào cuối file hoặc tạo ra một file mới nếu file không tồn tại.

a+: ghi và đọc dữ liệu. Mở và ghi nội dung vào đầu file hoặc tạo ra một file mới nếu file không tồn tại.

x: tạo và mở file để ghi. Tạo ra một file mới và ghi nội dung vào file. Nếu file đã tồn tại, trả về giá trị FALSE và thông báo lỗi.

x+: tạo và mở file để đọc và ghi file. Tạo ra một file mới. Nếu file đã tồn tại, trả về giá trị FALSE và thông báo lỗi.

Kiểm tra kết thúc tập tin
feof() (end of file)

Duyệt và đọc từng dòng nội dung trong tập tin

Duyệt và đọc từng
ký tự trong tập tin

Đọc toàn bộ nội dung của tập tin

Kiểm tra trạng thái cuối file

Sử dụng hàm này rất hữu hiệu cho việc đọc dữ liệu trong file khi không biết chiều dài cụ thể của file.

Kết quả trả về là TRUE nếu con trỏ ở cuối file.

Cú pháp: feof($f)

Tham số $f là biến khai báo ở hàm fopen().

Chú ý: không thể đọc file khi mở file bằng chế độ w, a và x

Ví dụ: kiểm tra kết thúc file

<?php
if(feof($f)){
echo "Đã kết thúc file";
}
?>

fgets() được dùng để đọc từng dòng nội dung trong file, có kết quả trả về là một chuỗi có chiều dài lên đến <độ_dài>-1 (độ dài có đơn vị tính là byte), nếu không quy định <độ_dài> thì hàm này sẽ tự thiết lập độ dài mặc định là 1024 byte.

Cú pháp:
fgets($f [, int độ_dài])

Tham số $f là biến khai báo ở hàm fopen()

Ví dụ: Đọc và in toàn bộ nội dung
trong tập tin hoa.txt theo từng dòng

<?php
$f = fopen ("hoa.txt", "r") or exit ("không mở được file này");
while(!feo($f)){
$noi_dung = fgets($f);
echo $noi_dung."<br>";
}
fcloase($f);
?>

fgetc(): đọc từng ký tự đơn trong file.

Chú ý: sau khi gọi hàm này thì con trỏ sẽ
di chuyển tới ký tự tiếp theo trong file.

Cú pháp: fgetc($f)

Tham số $f là biến khai
báo trong hàm fopen()

Ví dụ: Đọc và in toàn bộ nội dung
trong tập tin hoa.txt theo từng ký tự

<?php
$f = open ("hoa.txt", "r") or exit ("không mở được file này");
while(!feof($f)){
$noi_dung = fgetc($f);
echo $noi_dung;
}
fclose($f);
?>

readfile(): đọc toàn bộ nội dung có trong file và hiển thị.

Kết quả trả về của hàm là số byte của file nếu đọc file thành công, ngược lại trả về kết quả FALSE.

Cú pháp: readfile(“đường dẫn và tên của file”)

Ghi nội dung của file

Cú pháp: fwrite(“đường dẫn và tên của file”, nội_dung [, độ_dài]);

Chú ý: độ dài là tham số tùy chọn: quy định số byte tối đa được ghi vào file của nội dung.

<?php
$noi_dung = "Ghi nội dung vào tập tin";
// thực hiện việc mở và ghi file
$f = fopen ("$ten_file", "a");
fwrite($f, $noi_dung);
fclose($f);
?>

Trước ghi khi chuỗi vào cuối file cần phải định dạng lại
chuỗi đó theo nhu cầu xuất dữ liệu trở lại khi đọc file.

Cách thức định dạng: tự thiết lập. Tuy nhiên,
có một số định dạng được quy định sẵn như sau:

-\t: nhảy tab

-\n: xuống dòng

fclose() đóng tập tin đã mở

Kết quả trả về là TRUE nếu đóng được file,
ngược lại kết quả trả về là FALSE

Cú pháp: fclose($f);

Tham số $f là biến đã khai báo ở hàm fopen().

Kiểm tra file tồn tại
file_exists()

Lấy kích thước tập tin
filesize()

Xóa tập tin

Kiểm tra tập tin

Cú pháp:
file_exists(“đường dẫn tập tin hoặc thư mục”)

Kết quả trả về của hàm là TRUE nếu file tồn
tại, ngược lại thì kết quả trả về là FALSE

Ví dụ: Kiểm tra sự tồn tại của file,
đọc và in nội dung khi file tồn tại

<?php
$file = "du_lieu/khach_hang.txt";
if(!file_exists($file)){
echo "không có file này!";
exit;
}else{
echo readfile(file);
echo "<br> Đọc file thành công";
}
?>

Cú pháp:
filesize(“đường dẫn tập tin”)

Kết quả trả về là kích thước của file (byte)
nếu thành công, ngược lại thì trả về FALSE.

Ví dụ: Kích thước của tập tin
hoa.txt trong thư mực du_lieu

<?php
echo filesize ("du_lieu/hoa.txt");
->2104 byte
?>

Cú pháp:
unlink(“đường dẫn tập tin”)

Kết quả trả về:
-TRUE nếu xóa file thành công
-FALSE nếu không xóa được file

Ví dụ: xóa tập tin san_pham.txt

<?php
$file = "du_lieu/san_pham.txt";
if(!unlink($file))
{
echo "không xóa được file: $file";
}
else
{
echo"Đã xóa file: $file";
}
?>

Cú pháp:
is_file(“đường dẫn tập tin”)

Kết quả trả về:
-true: nếu đường dẫn tập tin tồn tại
-false: nếu đường dẫn tập tin không tồn tại

<?php
echo is_file("du_lieu/hoa.txt");
->1:TRUE
?>

Giới thiệu

Các bước upload file

Lấy thông tin file

Trong các ứng dụng web, nhu cầu upload file khá cần thiết => đối tượng FileField được sử dụng giúp người dùng có thể upload file lên web server

Bước 1: Tạo form upload file

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Tên file:</label>
<input type="file" name="file_upload" id="file" />
<br/>
<input type="submit" value="upload file" name="submit" />
</form>


Bước 2: Viết code để thực hiện việc upload file

<?php
//kiểm tra file được upload có hợp lệ hay không
...
//nếu hợp lệ: dùng hàm move_upload_file để di chuyển file upload vào thư mục định sẵn là thư mục upload
move_upload_file($_FILES["file_upload"]["tmp_name"],"upload/".$_FILES["file_upload"]["name"]);
?>

Sử dụng $_FILES

-$_FILES[“filefield”][“name”] – tên file

-$_FILES[“filefield”][“type”] – kiểu của file

-$_FILES[“filefield”][“size”] – kích cỡ của file

-$_FILES[“filefield”][“tmp_name”] – tên tạm của file

-$_FILES[“filefield”][“error”] – lỗi của file

Mở thư mục

Duyệt thư mục

Đóng thư mục

Tạo thư mục

Kiểm tra đường dẫn thư mục

Kết quả trả về là nguồn (chứa các thư mục và tập tin) của thư mục nếu thư mục mở thành công, ngược lại kết quả sẽ trả về là FALSE.

Cú pháp: opendir(“đường dẫn và tên thư mục”);

Ví dụ: mở thư mục du_lieu
<?php
$dir = opendir("du_lieu");
?>

Duyệt thư mục bằng cách dùng vòng lặp while kết hợp với hàm readdir()

Cú pháp: readdir(“đường dẫn thư mục”)

Kết quả trả về của hàm là tên file hoặc thư mục trong thư mục được duyệt nếu đọc thành công. Ngược lại, kết quả trả về là FALSE

Ví dụ: Mở và duyệt thư mục du_lieu

<?php
$dir = opendir("du_lieu");
while(($file = readdir($dir)) !== false){
echo $file."\t";
}
closedir($dir);
?>
-> chi_tiet_don_hang.txt
hoa.txt

Cú pháp:
closedir(“đường dẫn thư mục”);

Ví dụ: đóng
thư mục du_lieu

<?php
closedir("du_lieu");
?>

Cú pháp:
mkdir(“tên thư mục”);

Kết quả trả về: là TRUE nếu tạo thư mục thành công, ngược lại kết quả trả về là FALSE.

Ví dụ: Tạo thư mục du_lieu

<?php
mkdir("du_lieu");
->1:TRUE
?>

Cú pháp:
is_dir(“đường dẫn và tên thư mục”);

Kết quả trả về: là TRUE nếu như thư mục tồn tại và là thư mục, ngược lại kết quả trả về là FALSE.

Ví dụ: Kiểm tra sự tồn tại của thư mục du_lieu

<?php
echo is_dir("du_lieu");
->1: TRUE
?>