01/10/2018, 15:30

Bài 11: Nhập Xuất FILE Trong PHP

Bài học này sẽ diễn giải các hàm liên quan đến thao tác file: Mở một file Đọc file Ghi file Đóng file Mở và Đóng Files Hàm fopen dùng để mở một file. Nó yêu cầu 2 đối số, bắt đầu là tên file và sau đó là chế độ hay nói đúng hơn là phạm vi thao tác. Cú pháp: $file = ...

Bài học này sẽ diễn giải các hàm liên quan đến thao tác file:

  • Mở một file
  • Đọc file
  • Ghi file
  • Đóng file

Mở và Đóng Files

Hàm fopen dùng để mở một file. Nó yêu cầu 2 đối số, bắt đầu là tên file và sau đó là chế độ hay nói đúng hơn là phạm vi thao tác.

Cú pháp: $file = fopen( $filename, “phạm vi thao tác” );

Có tổng cộng 6 phạm vi thao tác file như sau:

Phạm vi Mục đích
r Phạm vi này chỉ cho đọc file.

Đặt con trỏ ở đầu file. Tức là đọc từ dòng đầu tiên đến hết file

r+ Mở file cho đọc và ghi.

Đặt con trỏ đầu file

w File được mở chỉ cho ghi.

Xóa nội dung file tồn tại hoặc tạo file mới nếu chưa có.

Đặt con trỏ đầu file

w+ Tương tự chỉ thị w và cho khả năng đọc.

Đặt con trỏ đầu file

a Mở file chỉ cho ghi.

Đặt con trỏ cuối file.

Nếu file không tồn tại sẽ tạo file mới.

a+ Mở file cho đọc và ghi.

Đặt con trỏ cuối file.

Nếu file không tồn tại sẽ tạo file mới.

Nếu mở file bị thất bại thì hàm fopen sẽ trả về giá trị là false.

Sau khi thay đổi nội dung file đã mở, bạn luôn nhớ rằng phải đóng nó với hàm fclose().Nếu không các thao tác khác lên file se không thực hiện được, và tốn vùng nhớ vì phải giữ bộ nhớ cho việc mở file.

Đọc một file

Một khi file đã được mở khi sử dụng hàm fopen thì nó có thể được đọc với hàm fread(). Hàm này yêu cầu 2 đối số : con trỏ file và chiều dài byte của file. Nếu muốn đọc hết file thì chúng ta đưa vào kích thước tối đa của file.

Để đọc chiều dài của file chúng ta dùng hàm filesize(), hàm này sẽ lấy tên file làm đối số và trả về kích thước của file bằng đơn vị là byte.

Sau đây là thứ tự các hàm chúng ta dùng để đọc file:

  1. fopen //mở file
  2. filesize //lấy kích thước file
  3. fread //đọc nội dung file
  4. fclose //đóng file

Chúng ta xét ví dụ đọc nội dung 1 file và in nội dung đó ra màn hình

<html> 

   <head>   

   <title>Reading a file using PHP</title> 

 </head>  

   <body>   

     <?php        

        $filename = “tmp.txt”;  

       $file = fopen( $filename, “r” );    

       if( $file == false ) {  

          echo ( “Error in opening file” );   

          exit();   

      }          

      $filesize = filesize( $filename );    

     $filetext = fread( $file, $filesize );  

      fclose( $file );  

     echo ( “File size : $filesize bytes” );  

     echo ( “<pre>$filetext</pre>” );    

    ?>    

    </body>

</html>

Các bạn chuẩn bị 1 file có tên là tmp.txt và bỏ nó vào cùng thư mục cùng cấp với file php, tôi giả sử bạn tạo file index.php với nội dung như ví dụ, và 1 file tmp.text nằm cùng cấp với index.php, chạy chương trình ở trình duyệt bạn sẽ thấy được nội dung của file.

Hãy thay đổi các phạm vi đọc file để trãi nghiệm nhé.

Ghi một file

Một file mới có thể được ghi hoặc nội dung có thể được cộng thêm, bổ sung thêm nếu file tồn tại bằng cách sử dụng hàm fwrite. Hàm này yêu cầu 2 đối số là con trỏ file và nội dung dữ liệu để ghi vào file.

Ngoài ra có một đối số (tùy chọn) thứ 3 để chỉ ra chiều dài dữ liệu để ghi, giả sử tôi cần ghi thêm 2 byte dữ liệu mà thôi thì nếu bạn cho nội dung cần ghi vào nhiều hơn 2 byte thì nó chỉ ghi 2 byte rồi phần còn dư nó cắt bỏ.

Chúng ta xét một ví dụ sau : tạo một file mới và ghi một chuỗi nội dung ngắn như sau:

<?php

   $filename = “/home/user/guest/newfile.txt”;

   $file = fopen( $filename, “w” );

   if( $file == false ) {

      echo ( “Error in opening new file” );

      exit();

   }  

  fwrite( $file, “This is  a simple test ” );

   fclose( $file );

?>

<html> 

     <head>

      <title>Writing a file using PHP</title> 

    </head>

      <body>  

          <?php   

           $filename = “newfile.txt”;

           $file = fopen( $filename, “r” );

           if( $file == false ) {

            echo ( “Error in opening file” );

            exit();

         }        

         $filesize = filesize( $filename );

         $filetext = fread( $file, $filesize );  

         fclose( $file ); 

         echo ( “File size : $filesize bytes” );

         echo ( “$filetext” );  

        echo(“file name: $filename”); 

     ?>

   </body>

</html>

Ví dụ trên khi chạy sẽ ra kết quả là : Error in opening new file.

Vì sao ?????.

Để kiễm tra file có tồn file hay không chúng ta dùng hàm file_exist(), hàm này dùng tên file làm đối số.

Chúng ta đã đi qua các thao tác làm việc với file trong PHP rồi. Các bạn hãy bật server lên và chạy nó, đừng quên thay đổi phạm vi đọc/ghi file để trãi nghiệm nhé.

0