H ng d n l p trình VB.ướ NET Ch ng 12: Khám phá cách x lý file văn b n vàươ
chu i
Ch ng ươ 12:
Khám phá cách x lý file TEXT và chu i
--------oOo--------
N i dung th o lu n:
- Hi n th n i dung file text b ng đ i t ng TextBox ượ
- L u các thông tin trong file textư
- S d ng k thu t x lý chu i đ s p x p và mã hóa file Text ế
Trong ch ng này chúng ta h c cách x file text đ n gi n v i các thao tác nh mươ ơ ư
file, hi n th n i dung , l u và các thao tác khác nh x lý chu i trong ch ng trình thôngư ư ươ
qua l p chu i String. B n th s p x p, ghép n i hóa hi n th t ng t , t ng dòng ế
và toàn b n i dung văn b n trong file text.
Chú ý:
- Đ i t ng ượ FileSystem cung c p các hàm nh ư FileOpen, LineInput, PrintLine,
FileClose đ thao tác v i t p tin. Đ i t ng này n m trong không gian tên ượ
Microsoft.VisualBasic.
- Ngoài ra m t s hàm trong không gian System.IO cũng có th dùng b sung.
1. Hi n th n i dung file Text b ng đ i t ng TextBox ượ
Cách đ n gi n nh t đ hi n th m t file text dùng đi u khi n textbox.ơ Đ n p n i
dung file text vào textbox ta dùng 4 hàm sau: FileOpen M file đ d c hay ghi ,
LineInput – Đ c m t dòng văn b n t file , EOF Ki m tra xem con tr đã đ n cu i file ế
ch aư, FileClose – Đóng file.
1.1. M file Text đ đ c n i dung
B n th cho phép ng i dùng m file text b ng cách hi n th h p tho i ườ
OpenfileDialog. Sau khi ng i dùng đã ch n file, h p tho i s tr v đ ng d n fileườ ườ
đ y đ thông qua thu c tính filename.
1.2. Hàm FileOpen
Sau khi đã tên file, b n th dùng hàm FileOpen m file đ đ c hay ghi. pháp
hàm FileOpen nh sau:ư
FileOpen(filenumber, pathname, mode)
Trong đó:
- filenumber: s nguyên t 1 đ n 255 ế
- pathname: đ ng d n h p l tr đ n file c n mườ ế
Biên so n: Ph m Đ c L p - 1 - Add: cnt-44-dh,
VIMARU
H ng d n l p trình VB.ướ NET Ch ng 12: Khám phá cách x lý file văn b n vàươ
chu i
- mode: t khóa cho bi t ch đ m (ví d ế ế OpenMode.Input là m file đ đ c và
OpenMode.Output là m file đ ghi)
S nguyên filenumber dùng đ k t h p v i file khi đ c m cho m c đích đ c ghi. ế ượ
B n dùng đ tham chi u đ n file trong quá trình x lý. L u ý các s ế ế ư filenumber
trong hàm FileOpen, LineInput, FileClose EOF ph i trùng nhau thì khi m file m i
không gây ra l i.
Ví d :
Ch ng trình ươ TextBrowser sau s minh h a cách m m t file text cho hi n th lên
m t ô textbox.
Tìm hi u ch ng trình: ươ
Ch ng trình bao g m m t menu ươ File v i hai m c ch n Open cho phép m file r i
hi n th n i dung file text đó vào m t textbox và m c Close đ đóng file.
Thi t k giao di n:ế ế
B n t o m t gi i pháp m ithêm vào d án tên TextBrowserthi t k giao di n ế ế
nh sau:ư
Trong đó các đi u khi n có thu c tính nh sau: ư
- Textbox1: Enable – False, Multiline – True.
- OpenToolStripMenuItem: Enable – True
Biên so n: Ph m Đ c L p - 2 - Add: cnt-44-dh,
VIMARU
H ng d n l p trình VB.ướ NET Ch ng 12: Khám phá cách x lý file văn b n vàươ
chu i
- CloseToolStripMenuItem: Enable – False
- Các đi u khi n và thu c tính khác nh hình. ư
Vi t mã:ế
T o th t c OpenToolStripMenuItem_Click nh sau:ư
'Khai báo hai bi n, m t bi n l u toàn b văn b nế ế ư
'm t bi n l u t ng dòng văn b n ế ư
Dim AllText, LineOfText As String
'T o b l c file *.txt
OpenFileDialog1.Filter = "Text files (*.txt)| *.txt"
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.FileName <> "" Then
Try
'M file đ đ c
FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input)
Do Until EOF(1)
c t ng dòng đ n h t ế ế
LineOfText = LineInput(1)
'N i vào bi n Alltext ế
AllText = AllText & LineOfText & vbCrLf
Loop
'C p nh t n i dung textbox
Label1.Text = OpenFileDialog1.FileName
TextBox1.Text = AllText
' Lo i b đánh d u ch n cho văn b n
TextBox1.Select(1, 0)
'Cho phép so n th o
TextBox1.Enabled = True
'Cho phép ch n m c Close trên menu
CloseToolStripMenuItem.Enabled = True
'Vô hi u hóa m c Open trên menu
OpenToolStripMenuItem.Enabled = False
Catch ex As Exception
MsgBox("L i m file" )
Finally
'Đóng file
FileClose(1)
End Try
End If
Ti p theo t o th t c ế CloseToolStripMenuItem_Click nh sau:ư
Label1.Text = "M file văn b n b ng m c Open t menu File"
TextBox1.Text = ""
OpenToolStripMenuItem.Enabled = True
CloseToolStripMenuItem.Enabled = False
Các b n th đ c các dòng ghi chú màu xanh cây đ bi t công d ng c a t ng phát ế
bi u c a ch ng trình. ươ
Ch y ch ng trình: ươ
Các b n n F5 đ ch y ch ng trình m m t file text b t kỳ đ xem ch ng trình ươ ươ
ch y.
S d ng l p StreamReader đ m file Text
Biên so n: Ph m Đ c L p - 3 - Add: cnt-44-dh,
VIMARU
H ng d n l p trình VB.ướ NET Ch ng 12: Khám phá cách x lý file văn b n vàươ
chu i
Ngoài các hàm m đ c file nh đã bi t, chúng ta cũng có th s d ng l p ư ế StreamReader
c a VB.NET đ th c hi n ch c năng t ng t . Đ s d ng l p này ta c n đ t thêm ươ
khai báo Imports System.IO đ u ch ng trình. ươ
Sau đây th t c OpenToolStripMenuItem_Click đã đ c vi t l i s d ng l pượ ế
StreamReader:
Dim StreamReaderToDisPlay As StreamReader
OpenFileDialog1.Filter = "TEXT FILES (*TXT) | *.TXT"
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.FileName <> "" Then
Try
StreamReaderToDisPlay = New StreamReader _
(OpenFileDialog1.FileName)
Label1.Text = OpenFileDialog1.FileName
TextBox1.Text = StreamReaderToDisPlay.ReadToEnd
TextBox1.Enabled = True
OpenToolStripMenuItem.Enabled = False
CloseToolStripMenuItem.Enabled = True
Catch ex As Exception
MsgBox("L i m file" )
Finally
StreamReaderToDisPlay.Close()
End Try
End If
B n th xem toàn b ch ng trình trong gi i pháp TextBrowser1 c a ph n bài ươ
t p ch ng 12. ươ
2. T o m t file text m i
T o file text r t h u ích khi b n mu n ghi ra file .log, .ini hay readme. Các b c t ng ướ
quát đ ghi m t file text có th nh sau: ư
- Nh n dl nh p t ng i dùng hay do ch ng trình tính ra ườ ươ
- Gán dl cho m t hay nhi u bi n. Ví d nh gán n i dung textbox1 ra m t bi n ế ư ế
- Yêu c u nh p tên file s ghi ra b ng h p tho i SaveFileDialog
- S d ng đ ng d n tên file do h p tho i SaveFileDialog tr v g i hàm ườ
ghi file
- S d ng hàm PrintLine đ l u n i dung bi n xu ng file ư ế
- Đóng file khi ghi xong
Ví d QuickNote sau đây s minh h a vi c t o file text.
Tìm hi u ch ng trình: ươ
Ch ng trình g m m t ô textbox đ ch d multiline hi n scrollbars c hai chi u (thu cươ ế
tính scrollbar – giá tr both), menu File g m ba m c ch n Insert Date cho phép chèn ngày
Biên so n: Ph m Đ c L p - 4 - Add: cnt-44-dh,
VIMARU
H ng d n l p trình VB.ướ NET Ch ng 12: Khám phá cách x lý file văn b n vàươ
chu i
tháng vào đ u văn b n, m c ch n Save cho phép ghi l i n i dung ô textbox vào m t file
text v i tên do ng i dùng nh p vào, m c ườ Close đóng ch ng trình.ươ
Thi t k giao di n:ế ế
B n t o m t gi i pháp m i và thêm o m t d án có cùng tên là QuickNote r i thi t k ế ế
giao di n nh hình: ư
Vi t mã:ế
T o th t c InsertDateToolStripMenuItem_Click nh sau:ư
TextBox1.Text = DateString & vbCrLf & TextBox1.Text
TextBox1.Select(1, 0)
T o th t c SaveToolStripMenuItem_Click nh sau:ư
SaveFileDialog1.Filter = "Text File (*.txt) | *.txt"
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName <> "" Then
Try
FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
PrintLine(1, TextBox1.Text)
Catch ex As Exception
MsgBox("L i khi ghi")
Finally
FileClose(1)
End Try
End If
Ch y ch ng trình: ươ
Biên so n: Ph m Đ c L p - 5 - Add: cnt-44-dh,
VIMARU