Xử lý dữ liệu trong tập tin theo mô hình FSO (File System Object)

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 91 - 95)

Kiu 2: Lp cho n khi iu kin là FALSE

13. Lập trình xử lý tập tin

13.3. Xử lý dữ liệu trong tập tin theo mô hình FSO (File System Object)

Các thao tác với tập tin ở phần trên chỉ bao gồm hai loại cơ bản nhất là đọc dữ liệu từ tập tin và ghi thông tin lên tập tin, còn những thao tác khác, thường xuyên được sử dụng, như: lựa chọn tập tin, sao chép, di chuyển, xóa…, tuy có thể thực hiện được từ những lệnh đọc/ghi cơ bản trên nhưng khá rắc rối. Vì vậy, để tạo thuận lợi cho người dùng, VB đã cung cấp những chức năng này thông qua mô hình FSO. Đây là một tập hợp các lớp đối tượng, mà nhiệm vụ của chúng là cung cấp cho người dùng hầu hết các công cụ thao tác với tập tin.

Các lớp đối tượng theo mô hình FSO là một dạng bổ sung cho VBA và được cung cấp dưới dạng thư viện lập trình với tên gọi “Microsoft Scripting Runtime”. Để sử dụng thư viện này trong VBA IDE cần thực hiện thao tác sau: trong VBAIDE chọn trình đơn Tools References Đánh dấu chọnMicrosoft Scripting RuntimeChọnOK

http://www.ebook.edu.vn

Hình II-36: Sử dụng thư viện lập trình Microsoft Scripting Runtime.

CHÚ Ý Khi thao tác với tập tin, mô hình FSO chỉ hỗ trợ cách thức truy cập tuần tự.

Các lớp (class) chính trong mô hình FSO:

Tn lp M t Ghi ch

FileSystemObject Đối tượng quản lý trong mô hình FSO Tham khảo trong Object Browser hoặc Help.

Drive Đối tượng ổ đĩa

Folder Đối tượng thư mục

File Đối tượng tập tin

TextStream Đối tượng luồng dữ liệu (dạng text) phục vụ việc thao tác với dữ liệu trong tập tin

Các phương thức chính của lớp FileSystemObject phục vụ cho thao tác tập tin

Tn phng thc M t Ghi ch

CopyFile Sao chép tập tin

DeleteFile Xoá tập tin Tham khảo Object Browser

MoveFile Di chuyển tập tin Tham khảo Object Browser

FileExists Kiểm tra sự làm việc của tập tin Trả về giá trị Boolean

CreateTextFile Tạo tập tin mới (dạng text) Trả về đối tượng kiểu TextStream GetFile Nhận về một tập tin đã có Trả về đối tượng kiểu File

OpenTextFile Mở một tập tin dạng text để làm việc Trả về đối tượng kiểu TextStream Các phương thức của lớp TextStream

Tn phng

thc

M t Ghi ch

Read Đọc một xâu dữ liệu trong tập tin Trả về dữ liệu kiểu String ReadLine Đọc một dòng dữ liệu trong tập tin Trả về dữ liệu kiểu String ReadAll Đọc toàn bộ dữ liệu trong tập tin Trả về dữ liệu kiểu String

Skip Bỏ qua một xâu dữ liệu trong tập tin Trả về đối tượng kiểu TextStream SkipLine Bỏ qua một dòng dữ liệu trong tập tin

Write Ghi một xâu dữ liệu vào trong tập tin WriteLine Ghi một xâu dữ liệu thành một dòng

trong tập tin

WriteBlankLines Chèn một dòng trống vào trong tập tin Close Đóng luồng dữ liệu.

Trình t" làm vic vi d+ liu ca t;p tin theo mô hình FSO

1. Tạo đối tượng<FSO>thuộc lớpFileSystemObjectnhằm quản lý tập tin, thư mục hoặc ổ đĩa theo cú pháp sau:

Dim FSO As New FileSystemObject

Hoặc:

Set FSO = CreateObject("Scripting.FileSystemObject")

Trong đó:<FSO>là tên của đối tượng (chính là tên biến), mà dựa vào nó ta sẽ thao tác với tập tin.

2. Tạo đối tượng <TxtStr> thuộc lớp TextStream nhằm phục vụ cho việc thao tác với dữ liệu trong tập tin theo cú pháp sau:

Dim TxtStr As New TextStream

3. Thao tác với dữ liệu với đối tượngTxtStr.

4. Đóng luồng dữ liệu để kết thúc thao tác theo cú pháp sau TxtStr.Close

CHÚ Ý Hai cách khai báo biến đối tượng sau là tương đương nhau:

Dim FSO As New FileSystemObject Và:

Dim FSO As FileSystemObject Set FSO = New FileSystemObject

13.3.1. Tạo tập tin mới

Sử dụng phương thức CreateTextFile để tạo tập tin mới và mở sẵn nó cho các thao tác đọc/ghi. Cú pháp như sau:

Set TxtStr=FSO.CreateTextFile(FileName,[Overwrite],[Unicode])

Trong đó:

http://www.ebook.edu.vn

FileName: tên của tập tin cần tạo, kiểuString, phải bao gồm đầy đủ đường dẫn để xác định vị trí của tập tin, nếu chỉ có tên tập tin thì tập tin này sẽ được tạo vào thư mục mặc định.

[Overwrite]: lựa chọn có ghi đè hay không trong trường hợp tập tin đã có. Tham số này là tuỳ chọn và có kiểu làBoolean, giá trị mặc định là True(cho phép ghi đè). Nếu đặt tham số này làFalsevà tập tin đã có thì sẽ phát sinh lỗi và làm dừng chương trình.

[Unicode]: lựa chọn có sử dụng bảng mã Unicode trong tập tin hay không. Tham số này là tuỳ chọn và có kiểu làBoolean, giá trị mặc định làFalse.

Ví dụ sau sẽ tạo ra tập tin Test.txt trong ổ đĩa C, nếu tập tin này đã có, nó sẽ bị ghi đè lên, nghĩa là các thông tin cũ sẽ bị xóa hết:

Dim FSO As New FileSystemObject Dim TxtStr As TextStream

Set TxtStr=FSO.CreateTextFile(“C:\Test.txt”,True,True)

13.3.2. Mở tập tin đã có để thao tác

Khi muốn làm việc với một tập tin đã có (đọc/ghi), sử dụng cú pháp sau:

Set TxtStrObj=FSO.OpenTextFile(FileName,[IOMode],[Create],[Format])

Trong đó:

FileName: Tên và vị trí của tập tin (kiểuString).

[IOMode]: Kiểu thao tác với tập tin. Tham số này là tuỳ chọn, có thể nhận một trong 3 giá trị sau:

ForAppending(hoặc 8): thêm dữ liệu vào cuối tập tin đã có.

ForReading(hoặc 1): đọc dữ liệu từ tập tin. Đây là giá trị mặc định của tham số.

ForWriting(hoặc 2): ghi dữ liệu vào tập tin.

[Create]: Tùy chọn có tạo tập tin hay không trong trường hợp tập tin chưa tồn tại. Nó có kiểu làBoolean, giá trị mặc định làFalse.

[Format]: tham số tuỳ chọn, chỉ cách mở tập tin theo định dạng. Tham số này có thể nhận một trong 3 giá trị sau:

TristateUseDefault (hoặc -2): mở tập tin theo định dạng chuNn của hệ thống.

TristateTrue (hoặc -1): mở tập tin với định dạng Unicode.

TristateFalse (hoặc 0): mở tập tin với định dạng theo chuNn ASCII. Đây là giá trị mặc định của tham số.

Trong quá trình đọc dữ liệu từ tập tin, phải luôn chắc chắn rằng vị trí con trỏ đọc dữ liệu không ở cuối tập tin bởi điều này sẽ làm phát sinh lỗi. Để kiểm tra xem vị trí con trỏ đọc dữ liệu đã ở cuối tập tin chưa, dùng thuộc tínhAtEndOfStream của lớpTextStream. Thuộc tính này trả về giá trịTrue nếu ở cuối, trả vềfalse nếu chưa.

Ví dụ: đoạn chương trình sau sẽ đọc nội dung của tập tin “C:\file1.txt” và in ra cửa sổ Immediate.

Sub FSOReadFile()

Dim FSO As New FileSystemObject Dim TxtStr As TextStream

Dim StrTemp As String

If FSO.FileExists("C:\file1.txt") Then

Set TxtStr = FSO.OpenTextFile("C:\file1.txt", ForReading) Do While Not (TxtStr.AtEndOfStream)

StrTemp = TxtStr.ReadLine Debug.Print StrTemp

Loop

TxtStr.Close Else

MsgBox "Tap tin không co hoac Duong dan sai",vbCritical,"Thong bao"

End If End Sub

Kết quả thực thi đoạn chương trình trên như sau:

Những thao tác khác như Copy, Move, Delete hay làm việc với thư mục không được đề cập trong giáo trình này, tuy nhiên người đọc có thể tìm hiểu trong các tài liệu tham khảo nêu ở cuối giáo trình này hoặc trong Help Online của VBA IDE.

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 91 - 95)

Tải bản đầy đủ (PDF)

(434 trang)