VB có 6 lệnh tương tác trực tiếp với hệ điều hành:
ChDrive (Drive as String) ' thay đổi ổ đĩa đăng nhập đối với hệ điều hành nền
VD: ChDrive ("D:\")
ChDir (Path as String) ' thay đổi thư mục hiện hành
VD: ChDir ("C:\Windows\Temp")
MkDir (Path as String) ' tạo mới thư mục
VD: MkDir ("C:\MyDir") ' tạo mới thư mục MyDir trên ổ C
RmDir ("Path as String") ' loại bỏ một thư mục
VD: RmDir ("C:\MyDir")
Name [Source] As [Dest] ' đổi tên và di chuyển tập tin
VD: Name "C:\myFile.txt" As "D:\FileChua.txt" sẽ move tập tin myFile.txt từ C:\ đến D:\ với tên mới: FileChua.txt
Kill (PathName as String) ' xoá tập tin với tham số PathName chấp nhận ký tự đại diên (như Dos)
VD: Kill ("C:\*.txt") sẽ xoá tất cả tập tin có phần mở rộng là txt trong thư mục gốc của ổ C
-------------------------------------------------------------------------------------------------------
Ôn lại một chút về khái niệm "hiện hành" có từ thời của Dos để hiểu rõ hơn về 6 lệnh này của Vb vì thực sự chúng rất mạnh.
Ví dụ khi file thực thi của bạn nằm tại "C:\MyDir\MyFile.exe" thì lệnh MkDir ("NewDir") sẽ tạo mới một Path: "C:\MyDir\NewDir" tức là thư mục NewDir nằm cùng cấp với MyFile.exe. Nhưng nếu trước đó có câu lệnh ChDir ("C:\Windows") thì lệnh trên sẽ tạo Path: "C:\Windows\NewDir". Tương tự như vậy với lệnh ChDrive. Quan trọng là bạn phải biết "mình đang ở đâu?" bằng không với câu lệnh không chỉ rõ Path: Kill (*.*) sẽ bụp sạch các File không mong muốn nếu trước đó đã xài ChDir mà quên.
--------------------------------------------------------------------------------------------------------
CurDir (Drive) ' trả về một chuỗi với tên đầy đủ của ổ đĩa hiện hành nếu tham số Drive để trống ( )
VD:
CurDir ( ) ---> tên ổ đĩa hiện hành
CurDir ( "D") ---> tên đầy đủ "D:\"
CurDir ("X") ---> sẽ báo lỗi nếu hệ thống không có tới ổ thứ X này
Dir (PathName, Attributes) ' tìm kiếm tập tin với đường dẫn đặt tại tham số 1. Tham số 2(Attributs) tùy chọn để chuyên biệt thuộc tính tìm kiếm. Mặc định la vbNormal
VD:
tmp = Dir ("C:\boot.ini") ---> tmp = ""
tmp = Dir ("C:\boot.ini", vbHidden) ---> tmp = "boot.ini"
FileCopy (Source as String, Destination as String) ' sao chép tập tin từ đường dẫn nguồn (Source) đến đường dẫn khác (Destination)
VD:
Filecopy "C:\Config.sys", "D:\Config.sys"
Filelen (PathNam As String) As Long ' trả về kích thước của tập tin
FileDateTime (PathName as string) ' trả về ngày tháng và thời gian tập tin đã được tạo ra hoặc được chỉnh sữa lần gần nhất.
VD:
Msgbox FileDateTime ("C:\Config.sys")
GetAttr (PathName as String) as Integer ' trả về một số nguyên là trị thuộc tính của File
Các hằng thuộc tính gồm:
vbNormal = 0
vbReadOnly = 1
vbHiden = 2
vbSystem = 4
vbVolume = 8
vbDirectory = 16
vbArchive = 32
VD:
GetAttr "C:\boot.ini" = 35 (file Boot.ini mang các thuộc tính sau: ReadOnly(1) + Hiden(2) + Archive(32)
SetAttr (PathName as String, Attributes as vbFileAttribute) ' Xác lập thông tin thuộc tính của File. Sử dụng các hằng thuộc tính hoặc các giá trị ở bảng trên cho tham số Attributes
VD:
SetAttr "C:\Boot.ini, 0" ---> xác lập file boot.ini chỉ mang một thuộc tính là Normal
SetAttr "C:\Boot.ini,3" ---> xác lập boot.ini mang thuộc tính chỉ đọc và ẩn.
FreeFile ' trả về một số integer là chỉ số (ID) để HDH theo dõi và quản lý các file đang mở (Open). Dùng một biến nguyên để lưu giá trị này dùng cho các cuôc gọi lệnh Open (file). Khi đó ta không cần quan tâm đến các chỉ số(ID) này nữa. FreeFile sẽ theo dõi và cung cấp cho ta các chỉ số(ID) chưa dùng.
VD:
Dim Filenum#
FileNum = FreeFile
Open [PathName] For Output As #Filenum
Open [PathName as String] For [Mode] As [ID File] ' Mỗi khi thấy lệnh Open, VB sẽ sẵn sàng cho các thao tác đọc và ghi lên File được cung cấp ở tham số [PathName]. Có năm chế độ mở tập tin được đặt ở tham số [Mode], và [ID File] dĩ nhiên là chỉ số của tập tin đang mở.
Các dạng thức cơ bản của lệnh Open:
Open [Pathname] For Input As Filenum ' mở File và chỉ đọc được thông tin, không ghi lên được.
Open [PathName] For Output As Filenum ' mở File để xuất thông tin. Khi được mở theo dạng này mọi thông tin cũ trên File sẽ bị mất.
Open [PathName] For Append As Filenum ' mở File để đọc và ghi tiếp lên được.
Open [PathName] For Random As Filenum ' mở và truy cập ngẫu nhiên các bản ghi và các trường trên File (phải biết được cấu trúc của các bản ghi)
Open [PathName] For Binary As Filenum ' đọc ghi theo Byte. Đây là dạng tổng quát và linh hoạt nhất.
Input [Number, #Filenum] ' đọc nội dung File với số lượng xác định ở tham số Number
VD: Str = Input (10, #Filenum) ' đọc 10 ký tự vào biến Str.
Dạng khác của Input:
Input [#Filenum, Str] ' ở đây biến Str thường ở dạng Variant
Line Input [#FileNum, Str] ' đọc thông tin theo từng dòng vào biến Str. Thường kết hợp với hàm EOF để lấy hết thông tin
EOF (Filenum) ' trả về vị trí chấm dứt của File khi đang mở
VD:
Do While Not EOF (Filenum) ' lập nếu không phải ở end of file
Line Input #Filenum, Str ' đọc từng dòng vào biến Str
Loop
LOF (Filenum) ' trả về kích thước của File khi đang mở.
VD:
Str = Input (LOF(Filenum), #Filenum) ' sẽ lấy hết nội dung của File (không nên sử dụng với File có kích thước vài Mb sẽ bị lỗi "out of memory")
Write [#Filenum, Expression] ' ghi lên File
VD:
Write #FileNum, "12345" ---> "12345"
Write #Filenum, 12345 --->12345
Print [#Filenum, Expression] ' làm việc chính xác như khi Print lên Form
VD:
Print #Filenum, 123; 456 ---> 123 456
Get [#Filenum, position, ByteArray] ' lấy thông tin từ tập tin được mở theo Binary tại vị trí xác định bởi Position và lưu vào ByteArray. Số byte lấy ra tùy thuộc vào kích thước của mảng ByteArray. Mỗi khi lấy ra 1 byte con trỏ tập tin tự động chuyển tới vị trí byte kế tiếp.
VD:
Dim Str as String * 4
Get #Filenum, 3, Str ---> lấy 4 byte bắt đầu từ byte thứ 3 lưu vào Str.
(nếu có câu lệnh Get tiếp theo mà tham số Position bỏ trống, thì vị trí bắt đầu lấy ra sẽ là byte thứ Cool
Loc (#Filenum) ' Trả về vị trí byte đọc/ghi hiện tại trong tập tin đang mở.
Seek [#Filenum, Position] ' dịch chuyển con trỏ tập tin đến vị trí qui định bởi tham số Position
VD:
Seek #Filenum, 3
Get #Filenum, , Str ---> vị trí lấy ra sẽ bắt đầu tại byte thứ 3
Seek (#Filenum) ' trả về vị trí hiện tại của con trỏ tập tin
Put [#Filenum, Position, ByteArray] ' đặt nội dung của mảng ByteArray vào vị trí byte thứ[Position].
Lệnh Put se ghi đè lên mọi thứ và chỉ dùng cho truy cập Random và Binary
VD: Put #filenum, , Str ---> sẽ ghi 4 byte bắt đầu ở vị trí byte thứ 1
Reset ' Đóng tất cả các tập tin đã được mở bằng lệnh Open
- Code:
-
Option Explicit
Private Sub Form_Load()
Dim FileNumber
For FileNumber = 1 To 5
Open "TEST" & FileNumber For Output As #FileNumber ' Mở file
Write #FileNumber, "Hello World" ' Ghi dữ liệu vào file.
Next FileNumber
Reset ' Đóng file và cập nhật dữ liệu vào file
End Sub