Bài giảng Database System Concepts - Chương 7: Xử lý tập tin với Visual Basic 6.0
Lab 04 – Ứng dụng xóa file
- Hãy thử viết 1 ứng dụng cho phép user xác định
mẫu các file cần xóa rồi tìm các file thỏa mãn mẫu
qui định và xóa chúng, việc tìm và xóa nên đệ quy
từ vị trí mẫu để xóa triệt để.
- Thí dụ nếu người dùng nhập pattern c:\*.tmp, ứng
dụng sẽ tìm và xóa mọi file *.tmp từ thư mục gốc.
17 trang |
Chia sẻ: vutrong32 | Lượt xem: 1126 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Database System Concepts - Chương 7: Xử lý tập tin với Visual Basic 6.0, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
bangtqh@utc2.edu.vn
TIN HỌC ĐẠI CƯƠNG
Chương 7: Xử lý tập tin với Visual Basic 6.0
Dùng cho nhóm ngành: Công trình + Cơ khí
bangtqh@utc2.edu.vn
Nội dung
1. Cấu trúc tệp (file)
2. Tổng quát về file trong VB
3. Truy xuất file trong VB (Các lệnh/Các hàm)
4. Truy xuất file nhị phân (binary file)
5. Truy xuất file tuần tự (sequence file/text file)
6. Các hàm xác định vị trí truy xuất file
7. Các hàm truy xuất thuộc tính file
8. Lệnh sao chép và xóa file
9. Các lệnh xử lý thư mục
Tin học đại cương - Chương 7 2
bangtqh@utc2.edu.vn
7.1. Cấu trúc tập tin (file)
Ở cấp độ hệ điều hành, file là danh sách n byte chưa có
ngữ nghĩa. Mỗi ứng dụng phải tự quy định cấu trúc cụ
thể cho file của mình tạo ra và đọc lại ngữ nghĩa của cấu
trúc này
VB cung cấp 3 dạng file khác nhau, ứng với mỗi dạng có
1 cách thức truy xuất dữ liệu tương ứng.
– File tuần tự (sequence file) hay file văn bản là danh sách
gồm n byte, mỗi byte là 1 ký tự ANSI (vd: file source code
của VB *.bas)
– File nhị phân (binary file) là danh gồm n byte nhị phân
chưa có cấu trúc (vd: file word, excel)
– File truy xuất trực tiếp (random file): là danh sách gồm n
record cùng độ dài, mỗi record chứa nhiều trường (field)
thông tin
Tin học đại cương - Chương 7 3
bangtqh@utc2.edu.vn
7.2. Tổng quát về file trong VB
VB cung cấp cho người lập trình 2 phương pháp để
quản lý file:
– Gọi các thủ tục truyền thống như Open, Close,
Input, Write, Get, Put,.. Ta có thể gọi các thủ tục
này là các lệnh VB
– Dùng mô hình đối tượng FSO (File System Object).
Người lập trình tạo ra đối tượng FileSystemObject rồi
mỗi khi cần quản lý hệ thống file sẽ gọi method tương
ứng của đối tượng trên
FSO rất thân thiện và dễ dùng nhưng chỉ hỗ trợ cho
phép truy xuất file văn bản, chưa hỗ trợ truy xuất file
nhị phân và file random
Tin học đại cương - Chương 7 4
bangtqh@utc2.edu.vn
7.3. Truy xuất file trong VB
Quy trình truy xuất 1 file trong VB gồm 3 bước
– Mở/tạo file : Gọi thủ tục Open
– Lặp truy xuất file: thông qua việc gọi thủ tục Input,
Get, Put, Write... Thường thì mỗi thủ tục chỉ truy xuất
1 đơn vị thông tin rất nhỏ của file nên ta phải lặp
nhiều lần cho tới khi hết file, tuy nhiên ta có quyền
đọc/ghi toàn bộ nội dung file vào/ra bộ nhớ
– Đóng file: Gọi thủ tục Close
Tin học đại cương - Chương 7 5
bangtqh@utc2.edu.vn
7.3. Truy xuất file trong VB (tt)
Bảng các lệnh VB truy xuất file
Tin học đại cương - Chương 7 6
Tên thủ tục Sequential file Random file Binary file
Open X X X
Close X X X
Input # X
Line Input # X
Print # X
Write # X
Input() X X
Type....EndType X
Put X X
Get X X
bangtqh@utc2.edu.vn
7.3. Truy xuất file trong VB (tt)
Bảng các function truy xuất file trong VB
– Dir: Duyệt các phần tử thuộc thư mục
– FileCopy: Sao chép 1 file thành file mới
– FileDateTime: Đọc/hiệu chỉnh ngày giờ sửa file lần cuối
– FileLen: xác định độ dài file chưa mở
– FreeFile: xác định chỉ số file còn trống để có thể dùng an
toàn
– Loc: Xác định vị trí truy xuất hiện hành trong file
– LOF: xác định độ dài file đã mở
– Seek: Xác định/thiết lập vị trí truy xuất file
– GetAttr: độc thuộc tính file
– SetAttr: ghi thuộc tính file
Tin học đại cương - Chương 7 7
bangtqh@utc2.edu.vn
7.4. Truy xuất Binary file
Mở (open) file nhị phân
Open pathName For Binary As filenumber
– Nếu chưa biết cấu trúc của file nên dùng dãy các
byte để đọc/ghi dữ liệu ra/vào file nhị phân
– Nếu đã biết cấu trúc file nhị phân nên khai báo
kiểu dữ liệu mô tả cấu trúc đó rồi khai báo biến có
kiểu vừa định nghĩa để chứa thông tin đọc/ghi trên file
Dùng lệnh Seek để dời pointer tới vị trí mong muốn
Seek [#] filenumber, [position], AVariable
Dời pointer tới vị trí position, đọc dữ liệu chứa vào biến
AVariable. Số byte đọc được = kích cỡ biến AVariable
Tin học đại cương - Chương 7 8
bangtqh@utc2.edu.vn
7.4. Truy xuất Binary file (tt)
Dùng lệnh Get để đọc dữ liệu
Get [#] filenumber, [position], AVariable
Đọc dữ liệu từ vị trí position rồi chứa vào biến AVariable
Số byte đọc được = kích thước biến Avariable
Dùng lệnh Put để ghi dữ liệu
Put[#] filenumber, [position], AVariable
Ghi dữ liệu trong AVariable vào vị trí position của file
Số byte được ghi vào file = kích thước biến Avariable
Dùng lệnh Close để đóng file
Close [#] filenumber
Tin học đại cương - Chương 7 9
bangtqh@utc2.edu.vn
Ví dụ truy xuất Binary file
Mỗi file thực thi (*.EXE) đều có 1 header dài 32 bytes với các field như sau:
– Nếu giá trị field Offset (2 byte) ở offset 18h (24) có giá trị là 40h (60) thì
tương ứng là file executable trên windows (*.exe, *.dll, *.ocx, *.scr, *.drv,....)
– Nếu giá trị field Offset <40h (60) thì là file *.exe chạy trên DOS
Dựa vào header trên, hãy viết một ứng dụng cho phép user chọn đường
dẫn đến file bất kỳ rồi kiểm tra tính chất của file đó với kết quả hiển thị
– Không phải file executable
– File executable chạy trên DOS
– File executable chạy trên Windows (*.exe, *.dll, *.ocx, *.scr, *.drv,....)
Tin học đại cương - Chương 7 10
Index Field Diễn giải
0 Magic Chuỗi 2 ký tự magic "MZ"
... .... Các file khác (không quan tâm)
18h Offset Offset tới bảng tái định chương trình stub
bangtqh@utc2.edu.vn
Ví dụ truy xuất Binary file
Giao diện đề nghị cho ứng dụng kiểm tra loại file
Tin học đại cương - Chương 7 11
bangtqh@utc2.edu.vn
Ví dụ: Chi tiết hàm kiểm tra phân loại file
Tin học đại cương - Chương 7 12
bangtqh@utc2.edu.vn
7.5. Truy xuất Sequence file
Mở file text bằng lệnh Open như sau :
Open pathname [Input | Output | Append] As
filenumber [Len=buffersize]
– Nếu file được mở ở chế độ Input & chưa tồn tại thì lỗi
sai tên file xảy ra.
– Nếu file được mở ở chế độ Output | Append & chưa
tồn tại thì hệ thống sẽ tạo ra file mới.
Dùng lệnh Line Input để đọc 1 hàng từ text file
Line Input #filenumber, varname
Quy ước 1 hàng kết thúc bởi CR - Carriage Return hay
CRLF
Tin học đại cương - Chương 7 13
bangtqh@utc2.edu.vn
7.5. Truy xuất Sequence file (tt)
Dùng lệnh Input #filenumber, varlist để đọc các chuỗi
hay số từ file (được trình bày chi tiết trong slide kế).
Dùng hàm Input (number, [#]filenumber) để đọc1 chuỗi
từ file (được trình bày chi tiết trong slide kế).
Dùng lệnh Write #filenumber, [outputlist] để ghi các
chuỗi hay số ra file (được trình bày chi tiết trong slide
kế).
Sau khi đãxử lý xong file, ta dùng lệnh Close [#]filenum
để đóng file lại.
Tin học đại cương - Chương 7 14
bangtqh@utc2.edu.vn
Chi tiết về lệnh Input #
Cú pháp : Input #filenumber, varlist
trong đó varlist là danh sách các biến chứa giá trị chuỗi hay
số cần đọc, các biến trong danh sách được ngăn cách bằng
dấu ','.
Cách thứcxử lý dữ liệu trên file nhập:
Dạng dữ liệu trên file Giá trị nhận được
dấu ',' hay dòng trống Empty
#NULL# Null
#TRUE# hay #FALSE# True hay False
#yyyy-mm-dd hh:mm:ss# Ngày/giờ
#ERROR errornumber# mã lỗi errornumber
"abcdef" chuỗi abcdef
1254.386 giá trị 1254.386
Tin học đại cương - Chương 7 15
bangtqh@utc2.edu.vn
Chi tiết về hàm Input
Ngoài lệnh Input ở trên, VB cung cấp thêm hàm Input
với cú pháp như sau:
Input number, [#]filenumber
Trong đó number là số ký tự ANSI cần đọc từ filenumber.
Khác với lệnh Input, kết quả trả về của hàm Input gồm
mọi kýtự thô trên file kể cả các ký tự điều khiển CR, LF,
khoảng trắng, ",", nháy kép...
Chỉ dùng hàm Input trên các file được mở ở chế độ
Input | Binary.
Tin học đại cương - Chương 7 16
bangtqh@utc2.edu.vn
Chi tiết về lệnh Write#
Cú pháp : Write#filenumber, [outputlist]
trong đó outputlist là danh sách các biểu thức chứa giá trị
chuỗi hay số cần ghi, các biểu thức trong danh sách được
ngăn cách bằng dấu ','
Cách thứcxử lý ghi dữ liệu ra file :
Kiểu dữ liệu Kết qủa ghi trên file
outputlist chỉ có dấu ',' Dòng trống (CRLF)
Null #NULL#
Luận lý #TRUE# hay #FALSE#
Date #yyyy-mm-dd hh:mm:ss#
mã lỗi errornumber #ERROR errornumber#
chuỗi abcdef "abcdef"
Số Chuỗi miêu tả số dùng dấu ‘.’
Tin học đại cương - Chương 7 17
bangtqh@utc2.edu.vn
Ví dụ truy xuất sequence file
Viết ứng dụng cho phép chọn đường dẫn tới 1 text
file rồi đếm số từ được chứa trong file này(Mỗi từ là
1 chuỗi ký tự số a-z hoặc số 0-9)
Tin học đại cương - Chương 7 18
bangtqh@utc2.edu.vn
Ví dụ: Chi tiết hàm đếm từ trong file
Tin học đại cương - Chương 7 19
bangtqh@utc2.edu.vn
7.6. Các hàm xác định vị trí truy xuất file
Hàm Loc (filenum) trả về vị trí truy xuất hiện tại
trong file filenum.
Mode Return Value
Random chỉ số record đọc/ghi lầncuối cùng
Binary chỉ số byte đọc/ghi lầncuối cùng.
Output | Append | Input chỉ số byte đọc/ghi lầncuối cùng/128
(ít dùng kết quả này)
Ví dụ
Dim MyChar As Byte
Open "TestFile" For Binary As #1 ' mở file để đọc/ghi.
Do While Not EOF(1) ' lặpcho đếnhết file.
MyChar = Input(1, #1) ' đọc byte kế tiếp.
Debug.Print Loc(1) ' hiểnthị vị trí byte vừa được đọc
Loop
Close #1 ' đóng file.
Tin học đại cương - Chương 7 20
bangtqh@utc2.edu.vn
7.6. Các hàm xác định vị trí truy xuất file (tt)
Hàm Seek(filenum) trả về vị trí truy xuất kế tiếp
trong file filenum.
Mode Return Value
Random truy xuất lần kế tiếp ở vị trí record này
Binary truy xuất lần kế tiếp ở vị trí byte này
Output | Append | Input vị trí byte đầu tiên là 1, byte kế là 2,....
Ví dụ
Dim MyChar As Byte
Open "TestFile" For Binary As #1 ' mở file để đọc.
Do While Not EOF(1) ' lặpcho đếnhết file.
MyChar = Input(1, #1) ' đọc byte kế tiếp.
Debug.Print Seek(1) ' hiển thị vị trí byte truy xuất lần kế tiếp
Loop
Close #1 ' đóng file.
Tin học đại cương - Chương 7 21
bangtqh@utc2.edu.vn
7.7. Các hàm truy xuất thuộc tính file
Hàm FileDateTime(pathname)
– Trả về ngày giờ hiệu chỉnh file lần cuối
Hàm GetAttr (pathname)
– Trả về byte thuộc thuộc tính của file. Các bit trong
byte thuộc tính có ý nghĩa như sau:
Tin học đại cương - Chương 7 22
Giá trị Tên hằng VB gợi nhớ Ý nghĩa
0 vbNormal Normal
1 vbReadOnly Chỉ đọc
2 vbHidden Ẩn
4 vbSystem File hệ thống
8 vbVolume Nhãn đĩa
16 vbDirectory Thư mục
32 vbArchive Bị thay đổi từ lần backup cuối
bangtqh@utc2.edu.vn
7.7. Các hàm truy xuất thuộc tính file (tt)
Hàm SetAttr (pathname, attributes)
– Thiết lập thuộc tính attributes cho file pathname
Ví dụ
If GetAttr ("c:\windows\win.com") And vbReadOnly Then
MsgBox "c:\windows\win.com là file chỉđọc"
End If
‘thiết lập thuộc tính read-only cho file win.com
Dim bytFileAttr As Byte
bytFileAttr = GetAttr ("c:\windows\win.com")
bytFileAttr = bytFileAttr Or vbReadOnly ' phép Or bitwise
SetAttr "c:\windows\win.com", bytFileAttr
Tin học đại cương - Chương 7 23
bangtqh@utc2.edu.vn
7.7. Các hàm truy xuất thuộc tính file (tt)
Hàm FreeFile [(rangenumber)]
– Trả về số Integer ứng với chỉ số file chưa được dùng.
Tham số rangenumber thường không được dùng
trong hàm này
Hàm LOF (#filenumber)
– Trả về giá trị kiểu Long ứng với size của file được
mở xác định bởi filenumber
Hàm FileLen (pathname)
– Trả về giá trị kiểu Long ứng với size của file được
xác định bởi pathname
Tin học đại cương - Chương 7 24
bangtqh@utc2.edu.vn
7.8. Lệnh sao chép/Xóa file
Lệnh sao chép file
– Cú pháp: FileCopy SourcePath, DestPath.
– Công dụng: Nhân bản file SourcePath tới DestPath. File
được nhân bản không bị mở rồi mới nhân bản.
Ví dụ :
FileCopy "c:\autoexec.bat" "c:\backup\autoexec.bat"
Lệnh xóa file
– Cú pháp: Kill pattern
– Công dụng xóa từ 0 đến n file có tên thỏa mãn mẫu
pattern (dùng ký tự * và ? để miêu tả).
Ví dụ:
Kill "c:\windows\*.tmp"
Tin học đại cương - Chương 7 25
bangtqh@utc2.edu.vn
7.9. Các lệnh xử lý thư mục
Lệnh tạo thư mục mới
Cú pháp: MkDir pathname
Ví dụ: MkDir "D:\Temp\VB60"
Lệnh xóa thư mục (rỗng)
Cú pháp: RmDir pathname
Ví dụ: RmDir "D:\Temp\VB60"
Hàm lấy đường dẫn tới thư mục hiện hành
Cú pháp: CurDir [(drive)]
Lệnh chuyển thư mục hiện hành
Cú pháp: ChDir pathname
Lệnh chuyển ổ đĩa hiện hành
Cú pháp: ChDrive drive
Hàm duyệt các phần tử trong 1 thư mục
Cú pháp: Dir[(pattern [, attributes] ) ]
Tin học đại cương - Chương 7 26
bangtqh@utc2.edu.vn Tin học đại cương - Chương 7 27
bangtqh@utc2.edu.vn
Thực hành chương 7
Xử lý tập tin với Visual Basic 6.0
bangtqh@utc2.edu.vn
Lab 04 – Ứng dụng xóa file
Hãy thử viết 1 ứng dụng cho phép user xác định
mẫu các file cần xóa rồi tìm các file thỏa mãn mẫu
qui định và xóa chúng, việc tìm và xóa nên đệ quy
từ vị trí mẫu để xóa triệt để.
Thí dụ nếu người dùng nhập pattern c:\*.tmp, ứng
dụng sẽ tìm và xóa mọi file *.tmp từ thư mục gốc.
Tin học đại cương - Chương 7 29
bangtqh@utc2.edu.vn
Lab 04 – Ứng dụng xóa file (tt)
Giao diện đề xuất của ứng dụng
Tin học đại cương - Chương 7 30
bangtqh@utc2.edu.vn
Code của ứng dụng xóa file đệ quy
Tin học đại cương - Chương 7 31
bangtqh@utc2.edu.vn
Code của ứng dụng (tt)
Tin học đại cương - Chương 7 32
bangtqh@utc2.edu.vn
Code của ứng dụng (tt)
Tin học đại cương - Chương 7 33
Các file đính kèm theo tài liệu này:
- ch7_9793.pdf