Trang Chủ   Vn+ TiVi   Fanpage Twitter  Fanpage FaceBook
Loading
                                         

Bản Tin Câu Lạc Bộ Pa Tin Im-Pod                                                                          
Diễn đàn Vn+
Tiêu Điểm

Tình Yêu - Giới Tính

1001 Bí Ẩn

Tổng hợp phần mềm

Ebook

Thủ Thuật IT

Thủ Thuật Blog

Video Clip

Lạ & Fun


You are not connected. Please login or register

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

Trunks-Kun

Trunks-Kun
Administrator
Administrator
- Lưu trữ dữ liệu là một trong những tính năng cơ bản của một chiếc máy tính, cho nên bất kỳ một ngôn ngữ lập trình nào cũng có những hàm giúp lập trình viên tạo ra những ứng dụng có thể lưu trữ dữ liệu ở dạng File. Và trong loạt bài này ta sẽ học cách: Tạo, Mở, Ghi, Đọc, Xóa, Sao Chép và Di Chuyển File

1. FileOpen($FileName, $Mode) - Tạo và Mở File
- Nếu dịch ra bạn sẽ thấy tên hàm có nghĩa là Mở File :-/ hơi bị kỳ cục đúng không, cần tạo thì lại đi mở. Thật ra không có gì lạ cả, bạn thử suy nghĩ xem, sau khi ta tạo file thành công bước tiếp theo cần làm sẽ là Đọc hoặc Ghi dữ liệu lên File đó, mà muốn đọc hay ghi thì cần phải mở file ra (cũng giống như muốn đọc sách thì ta phải mở sách trước vậy). Chính vì thế mà người ta đã gộp chung hàm Tạo và hàm Mở File lại thành một, rồi dùng một biến có tên là $mode để xử lý quá trình mở và tạo file.

Code:
    $Mode = 0
    $FileName = "D:/file.txt"
    FileOpen($FileName, $Mode)

- Biến $mode của hàm FileOpen() sẽ được chứa những con số, với mỗi con số được định trước hàm FileOpen() sẽ thực hiện 1 công việc nào đó. Với biến $FileName thì không có để nói vì nó sẽ chứa đường dẫn của file, cái cần nói chính là danh sách những con số của biến $Mode.

0 - Nếu $Mode bằng 0 thì file được mở ra chỉ được dùng để đọc, không ghi dữ liệu vào, không tạo file.
1 - Mở file để ghi dữ liệu vào cuối File, nếu file chưa tồn tại thì sẽ tạo file luôn.
2 - Mở file và xóa toàn bộ dữ liệu đã có trong file, nếu file chưa tồn tại thì sẽ tạo file luôn.
8 - Nếu các thư mục chứa file chưa có thì tạo lun
128 - Nếu dữ liệu cần ghi là Tiếng Việt thì dùng số này.
... (còn nữa nhưng không cần thiết học)


- Biết chức năng của những con số là vậy rồi, nhưng dùng thế nào? Ví dụ như tụi mình cần tạo 1 file rỗng nằm trong 1 thư mục chưa có trong máy tính thì làm sao? Câu trả lời nằm mở phép toán cộng, tức là cộng các con số lại với nhau rồi gán cho biến $Mode

Code:
    $Mode = 2 + 8  ;Nếu muốn ghi Tiếng Việt thì + 128 vô
    $FileName = "D:/NewFolder/file.txt"
    FileOpen($FileName, $Mode)

- Khi đã biết cách dùng hàm này để tạo và mở 1 file rồi, tụi mình sẽ tính tới chuyện tạo và mở nhiều file cùng 1 lúc. Bạn có thể suy đoán rằng mở nhiều file thì chỉ cần gọi hàm FileOpen() nhiều lần thôi, đó là suy đoán hoàn toàn đúng, nhưng vấn đề là làm sao để đọc và ghi dữ liệu vào đúng file cần thiết trong số cả đóng file đã mở. AutoIT giải quyết vấn đề này bằng cách gán file đã mở vào một biến, hãy xem ví dụ sau sẽ hiểu:

Code:
    $Mode = 2 + 8
    $FileName1 = "D:/NewFolder/file1.txt"
    $File1 = FileOpen($FileName1, $Mode)
   
    $FileName2 = "D:/NewFolder/file2.txt"
    $File2 = FileOpen($FileName2, $Mode)
   
    $FileName3 = "D:/NewFolder/file3.txt"
    $File3 = FileOpen($FileName3, $Mode)

- Tới đây chưa thể kết thúc với hàm FileOpen() được vì có 1 câu hỏi đặt ra là nếu ta mở file với $Mode = 0, tức là dùng để đọc, không tạo mới và file đó không tồn tại thì sao? Trong trường hợp này thì, hàm FileOpen() sẽ gán -1 cho các biến $File và với 1 cấu trúc If bạn có thể biết được việc mở file có thành công hay không.

Code:
    $Mode = 0
    $FileName = "D:/file.txt"
    $File = FileOpen($FileName, $Mode)
    If $File = -1 Then MsgBox(0,"","Không tìm thấy file")

2.FileWrite($File, $Data) - Ghi Dữ Liệu
- Như vậy, các biến $File1, $File2 và $File3 ở ví dụ trên sẽ được FileWrite() sử dụng để ghi dữ liệu vào, cho nên chúng sẽ được truyền vào FileWrite() là điều chắc chắn rồi, biến còn lại được truyền vào là $Data đây sẽ là biến chưa nội dung cần ghi vào, ví dụ:

Code:
    $Mode = 2 + 8  ;Chế độ Xóa toàn bộ dữ liệu và tạo mới Folder
    $FileName1 = "D:/NewFolder/file1.txt"
    $File1 = FileOpen($FileName1, $Mode)
   
    $Data = "http://72ls.NET"
    FileWrite($File1,$Data)

- Khi chạy code này mà không bị báo lỗi thì trong thư mục NewFolder của ổ đĩa D sẽ có 1 file tên là file1, phần mở rộng là txt với nội dung "http://72ls.NET" bên trong. Nếu bạn muốn tạo thêm hiệu ứng xuống dòng chỉ cần nối thêm @CRLF vào ngay chỗ cần xuống dòng.

Code:
    $Mode = 2 + 8  ;Chế độ Xóa toàn bộ dữ liệu và tạo mới Folder
    $FileName1 = "D:/NewFolder/file1.txt"
    $File1 = FileOpen($FileName1, $Mode)
   
    $Data = "http://72ls.NET" & @CRLF & "http://autoit.72ls.NET"
    FileWrite($File1,$Data)



3.FileClose($File) - Đóng File

- Sau khi đã ghi dữ liệu vào file bạn cần phải đóng file đã mở lại, đây xem như là bước xác nhận việc lưu, cũng giống như khi bạn gõ văn bản trong Word, những gì bạn đã gõ sẽ không được lưu vào file cho đến khi nào bạn bấm nút Save. Hàm này cũng chỉ có 1 thông số đó là biến $File được tạo ra ở hàm FileOpen().


Code:
    $Mode = 2 + 8  ;Chế độ Xóa toàn bộ dữ liệu và tạo mới Folder
    $FileName1 = "D:/NewFolder/file1.txt"
    $File1 = FileOpen($FileName1, $Mode)
   
    $Data = "http://72ls.NET" & @CRLF & "http://autoit.72ls.NET"
    FileWrite($File1,$Data)
   
    FileClose($File1)  ;Đóng File

4.FileRead($File) - Đọc Dữ Liệu

- Các bước thực hiện đọc cũng tương tự như ghi dữ liệu.
+ Đầu tiên là tạo biến $Mode với giá trị = 0.
+ Tạo biến $FileName chứa đường dẫn đến file cần đọc.
+ Gọi hàm FileOpen và truyền $FileName và $Mode.
+ Kiểm tra xem việc mở file có thành công hay không, nếu không thì thoát lun.
+ Gọi hàm FileRead() để đọc sau đó đóng file bằng hàm FileClose()

Code:
    $Mode = 0  ;Chế độ mở file để đọc
    $FileName1 = "D:/NewFolder/file1.txt"
    $File1 = FileOpen($FileName1,0)
    If $File1 = -1 Then Exit ;Nếu file không tồn tại thì thoát lun
   
    $Read = FileRead($File1)
    FileClose($File1)
   
    MsgBox(0,"",$Read)  ;Hiển thị những gì đọc được

- Trong ví dụ trên hàm FileRead() sẽ đọc toàn bộ nội dung có trong file, nếu bạn chỉ muốn đọc 1 hay 1 vài ký tự nào đó thôi thì truyền thêm số lượng ký tự muốn đọc vào như ví dụ bên dưới:

Code:
    $Mode = 0  ;Chế độ mở file để đọc
    $FileName1 = "D:/NewFolder/file1.txt"
    $File1 = FileOpen($FileName1,0)
    If $File1 = -1 Then Exit ;Nếu file không tồn tại thì thoát lun
   
    $Read = FileRead($File1,7)
    FileClose($File1)
   
    MsgBox(0,"",$Read)  ;Hiển thị những gì đọc được

Bài viết được đăng trên trang web autoit.72ls.net, mong đọc giả vào xem để ủng hộ Anh Em trong Forum viết tiếp.
- Cơ bản là như vậy, nhưng trong thực tế việc đọc không phải lúc nào cũng thành công, vì vậy AutoIT cho phép tụi mình kiểm tra xem việc đọc không bằng cách gán dữ liệu cho @error sau mỗi lần đọc.

Nếu sau khi đọc @error = 0 tức là việc đọc đã thành công.
Nếu @error = 1 tức là việc đọc thất bại, do file mở ra không phải dùng để đọc.
Đặc biệt nếu @error = -1 có nghĩa rằng bạn đã đọc đến cuối file, việc này ứng dụng để đọc file từ đầu đến cuối, mỗi lần đọc sẽ lấy 1 số lượng ký tự nhất định.


Code:
    $Mode = 0  ;Chế độ mở file để đọc
    $FileName1 = "D:/NewFolder/file1.txt"
    $File1 = FileOpen($FileName1,0)
    If $File1 = -1 Then Exit ;Nếu file không tồn tại thì thoát lun
   
    While 1
        $Read = FileRead($File1,7)
        If @error = -1 Then ExitLoop    ;Nếu đến cuối file thì thoát vòng lặp
        MsgBox(0,"",$Read)
    WEnd
   
    FileClose($File1)

5.FileDelete($FileName) - Xóa File

- Hàm này rất đơn giản chỉ cần cùng cấp tên file cần xóa là đủ và nếu việc xóa không thành công thì hàm sẽ trả về giá trị là 0, nếu đặt hàm vào cấu trúc If ta có thể kiểm tra được kết quả của việc xóa.

Code:
    $FileName1 = "D:/NewFolder/file1.txt"
    If FileDelete($FileName1) == 0 Then MsgBox(0,"72ls.NET","Xóa không thành công")

- Lưu ý rằng hàm FileDelete() sẽ xóa file đi lun mà không quăn vào thùng rác như Window thường làm khi ta bấm Delete. Nếu muốn giống Window, quăng vào thùng rác khi xóa thì bạn chỉ việc thay hàm FileDelete() bằng FileRecycle(), cách dùng 2 hàm này hoàn toàn giống nhau, chỉ khác mỗi cái tên và công dụng.

6.FileCopy($Source, $Dest, $Mode) - Sao chép file

- Để thực hiện việc sao chép bạn cần phải xác định rõ vị trí file nguồn ($Source) và vị trí của file mới ($Dest), sau đó truyền 2 giá trị này vào cho hàm là xong, việc kiểm tra kết quả sao chép cũng tương tự như hàm FileDelete()

Code:
    $Source = "D:/NewFolder/file1.txt"
    $Dest = "D:/OtherFolder/file2.txt"
    If FileCopy($Source,$Dest) == 0 Then MsgBox(0,"72ls.NET","Sao chép không thành công")

- Giờ đến biến $Mode, cũng giống như trong hàm FileOpen() biến này dùng để điều khiển sự hoạt động của FileCopy() và ta cũng sẽ cộng các con số lại nếu muốn kết hợp chức năng của các con số.

Nếu $Mode = 0 thì sẽ không sao chép nếu tại vị trí mới đã có 1 file bị trùng tên.
$Mode = 1 hàm sẽ ghi đè lên file bị trùng tên đã có trước đó.
$Mode = 8 sẽ tạo thư mục chứa file mới lun nếu như thư mục đó chưa có.

Code:
    $Source = "D:/NewFolder/file1.txt"
    $Dest = "D:/OtherFolder/file2.txt"
    If FileCopy($Source,$Dest,1+8) == 0 Then MsgBox(0,"72ls.NET","Sao chép không thành công")

7.
FileMove($Source, $Dest, $Mode) - Di chuyển file


Code:
    $Source = "D:/NewFolder/file1.txt"
    $Dest = "D:/OtherFolder/file2.txt"
    If FileMove($Source,$Dest) == 0 Then MsgBox(0,"72ls.NET","Di chuyển không thành công")

nguồn autoit.72ls.net

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Permissions in this forum:
Bạn không có quyền trả lời bài viết

 

Legend :  [ Vn-plus Founder ] [ Administrator ] [ Super Moderator ] [ Moderator ] [ Member ] [ VIP member ] [ banned ]



Free Auto Backlink Exchange ServiceFree Backlink Exchange For SeoVietnam BacklinksTravel BacklinksFree BacklinksText Backlink ExchangesText Back Link ExchangeFlorists LinksOverShopping Link ExchangeFree Automatic LinkWeb Link Exchange - Linkcsere

    Diễn Đàn Vn-Plus.Org | Thống kê | Liên hệ | Báo cáo lạm dụng  | Bạn muốn quảng cáo | Lên Đầu Trang

    Powered by: PHPBB2. Copyright © 2011  Diễn Đàn Mở VN+
    Contact: Vn-plus Founder . Yahoo: Nobita_xuka_ccy. Địa chỉ: Từ Tây - Yên Phú - Yên Mỹ - Hưng Yên
    BQT không chịu trách nhiệm bất cứ nội dung nào của thành viên đăng tải

Liên Kết Vớivn+

Create a forum on Forumotion | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất