D i» fta ndAr rệ jt(ộ r© Aí lcoj?
58 Chương 13 :K hảo sát các File Text và xử lý chuỗ
N a m e s p a c e M y
N am espace My là m ột tín h n ă n g tru y cập n h a n h được th iế t k ế để dơn giản hóa việc xử lý .NET F ram ew ork đ ể thực hiện các tác vụ th ô n g thường ch ẳ n g h ạ n n h ư xử lý các form, khảo s á t m áy chủ (host) và h ệ th ố n g file của nó, h iể n th ị th ô n g tin về ứng dụng hiện h à n h hoặc người dùng của nó và tru y cập các dịch vụ Web. H ầu h ế t những k h ả n ă n g n ày đã có sẵn trước đó th ô n g qua .NET F ram ew o rk Base C lass L ib rary như ng đo tín h phức tạp, n h iều n h à lập tr ìn h th ấ y các tín h n ăn g n ày khó đ ịn h vị v à khó sử dụng. N am espace My đ ã được th ê m tro n g M icrosoft V isual Studio 2005 để làm cho việc lậ p tr ìn h trở n ê n dễ dàn g hơn.
N am espace My được tổ chức th à n h m ột số h ạ n g mục chức n ăn g n h ư được tr ìn h bày tro n g b ản g 13-1. (MỵLog, M ỵResponse, và M ỵR equest không
được liệ t kê ở đây bởi vì chúng được th iế t k ế chỉ cho các ứng dụng ASP.NET).
Bảng 13.1 N am espace My Đ ố i tưỢ ng My .Application MỵComputer MỵPorms M ỵSettings MỵUser MỵWebServices Mô tả
Thông tin liên quan đến ứng dụng hiện h ành bao gồm tiêu đề, ứiư mục và số phiên bản. Thông tin về phần cứng, phần mềm và các file được d ặt trên máy tín h (cục bộ) hiện
h à n h . M y .C o m p u te r bao gổm
MỵComputer.PileSystem mà bạn có th ể sử dụng dể mở các íile tex t và các hle được mã hóa trên hệ thông.
Thống tin về các form project Visual Studio hiện hành. Chương 14 trìn h bày cách sử dụng MỵPorm để chuyển đổi qua lại giữa các form vào thời gian chạỵ
MỵResources Thông tin về các nguồn tài nguyên (chỉ đọc) của ứng dụng. Cho phép bạn truy tìm động các nguồn tài nguyên cho ứng dụng.
Thông tin về các xác lập của ứng dụng. Cho phép bạn lưu trữ và truy tìm động các xác lập thuộc tín h và thông tin khác trong ứng dụng.
Thông tin về người dùng hiện h ành đang hoạt động trê n MỵComputer.
Thông tin về các dịch vụ Web đang hoạt động trên MỵComputer và m ột cơ cấu để truy cập các dịch vụ Web mớị
N am espace My th ậ t sự là m ột tín h n ă n g "quay sô” n h an h " có th ể k h ai th á c đầy đủ th ô n g qua tín h n ăn g M icrosoít IntelliS en ce của Code E d ito r - Ví dụ, đ ể sử dụng m ột hộp th ô n g báo để h iể n th ị tê n của m ột m áy tín h hiện h à n h th eo sau là tê n của người dùng h iệ n h à n h tro n g m ột chương trìn h , b ạ n chỉ việc gõ nhập:
MsgBox(MỵUser.Name)
Đ iều này tạ o r a k ế t quả tương tự như sau;
ÚÁ '' \ ' m3m
C h ư ơ n g 13: K hảo s á t c á c File Text và xử lý chuôi 5 9
Mike-PC\Mik€
OK
Đối tượng Mỵ C om puter h iể n th ị nhiều h ạ n g mục th ô n g tin về m áy tín h v à các file của nó. Ví dụ, câu lệ n h sau đây h iể n th ị th ờ i gian h ệ th ô n g hiện h à n h (ngày th á n g v à th ờ i gian cục bộ) được duy tr ì bởi m áy tín h :, ỉ t g a j r v í x a L í Q ^
MsgBox(MỵComputer.Clock.LocalTime)
Câu lệ n h n ày tạ o r a k ế t quả như sau (có lẽ ngày th á n g v à thờ i b a n sẽ khác):
gian của
B ạ n có th ê sử dụng đối tượng M ỵC om puter>FileSystem cùng với phưcmg thứ c R eadA llText k h ác để mở m ột file te x t v à h iể n th ị nội dung của nó bên tro n g m ột đôi tượng hộp tex t. Sau đây là cú p h áp m à b ạn có th ể sử dụng n ếu b ạ n có m ột đô'i tượng hộp te x t tr ê n form có tê n là tx tN o te (như chương tr ìn h m ẫu vừa rồi) v à b ạ n dự đ ịn h sử đụng m ột dối tượng hộp th o ạ i openfile cổ tê n là O penP ileD ialogl để n h ậ n được tê n của file te x t từ người dùng;
Dim AIIText As s trin g =
OpenFileDiaÌog1.Filter = “ Text tiles ( * , t x t ) r , t x f
C h ư ơ n g 13: K h ả o s á t c á c File T e x t v à xử lý ch u ô i AIIText a MỵComputer.FiIeSystem.ReacỉAilText(OpenFileDialog1 .RleName) txtNotẹText = AIIText ‘display file
End lf
Phương thức R eadA llText sao chép to àn bộ nội dung của file te x t dược xác đ ịn h sa n g m ột biến chuỗi hoặc đôi tượng (tro n g trường hợp này, m ột biến chuỗi có tê n là AllText), do đó x é t về hiệu su ấ t và thờ i g ia n v iết m ã, R eadA llText n h a n h hơn đọc file mỗi lần m ột dòng.
Do yếu tố tôc độ này, nam espace My cung cấp m ột bước t ắ t h o àn hảo cho nhiều tá c vụ lập tr ìn h th ô n g thường. Điều quan trọ n g là p h ải chú ý tín h n ă n g n ày v à n h ữ n g công dụng có th ể có của nó ngoại trừ nam espace My hiệu quả ở đây bởi vì bạn đọc to àn bộ íìle text.
Nếu b ạn quên cú p h áp cho phương thức ReadAllText, b ạn có th ể chèn n h a n h m ột ví dụ b ằn g việc sử dụng m ột In s e r t S nippet. N hư được mô tả tro n g chương 7, I n s e r t S n ip p et cho ph ép b ạ n chèn các đ oạn m ã thông thư ờ ng tro n g Code E ditor, Để chèn phương thức R eadA llT ext, h iể n th ị Code E d ito r v à tr ê n m enu E dit, n h ấp In telliS ence và sau đó n h ấ p In s e rt S nippet. T rong hộp d an h sách In s e rt S nippet, n h ấ p đôi P u n d am e n tals - Collections, D a ta Types, F ile System , M ath; n h ấ p đôi F ile S y stem - P ro cessing D rives, Polders, A nd P iles và sau đó n h ấ p đôi Read T e x t From A Filẹ Điều n ày chèn đoạn m ã sau đây:
Dim íileContent As strin g
íileC ontentsl = My,Computer.FileSystem,ReadAIIText("C;\Test.txt") Class StreamReader
C lass S tream R ead er tro n g th ư viện .NET F ram ew ork cho ph ép bạn mở và h iể n th ị các file te x t tro n g chương trìn h . B ạn sê sử dụng kỹ th u ậ t này m ột vài lầ n tro n g sách này k h i b ạn làm việc với các file te x t (ví dụ ở chương 16). Để làm cho dễ sử dụng class S tream R ead er hơn, b ạn th ê m câu lệnh Im ports sau đây vào p h ầ n tr ê n cùng của m ã n h ư được th ả o lu ậ n trong chương 5:
Im ports System ,10
Sau đó, nếu chương tr ìn h chứa m ột đối tượng hộp tex t, b ạ n có th ể hiển th ị m ột file te x t b ên tro n g hộp te x t b ằng việc sử d ụng m ă chương trìn h sau đâỵ (File te x t m ở tro n g ví dụ n ày là B adbills.txt và m ã giả đ ịn h rằ n g một đối tượng có tê n là T extB oxl đã được tạo tr ê n form).
C h ư ớ n g 13: K h ả o sát c á c F ile T e x t và xử lý ch u ỗ i_____________________________ ^
Dim StreamToDisplay As StreamReader
S t r e a m T o D i s p l a y = N e w S t r e a m R e a d e r ( " C ; \ v b 1 O s b s \ c h a p 1 3 \ t e x f browser\badbills.txt")
TextBox.Text = StreamToDisplaỵReadToEnđ StreamToDisplaỵCloseQ
T ro n g ví dụ S tre a m R e a d e r, m ộ t b iế n đ ã được k h a i b áo có tê n là S tream T oD isplay có kiểu S tream R ead er để chứa nội dung của fíle te x t và sau đó m ộ t đường d ẫn hợp lệ được xác đ ịn h tro n g file m à b ạ n m uốn mở. T iếp th eo b ạ n đọc nội dung của íile te x t vào biến S tream T oD isplay bằn g việc sử dụng phương thức ReadToEnd, phương thức n ày tru y tìm t ấ t cả te x t tro n g file từ vị tr í h iệ n h à n h (p h ần đầu của íĩle te x t) đến cuối íìle te x t và gán nó s a n g thuộc tín h T ex t của đối tượng hộp tex t. Cầu lệ n h cuôl cùng đóng S tream R ead er. Việc đóng S tream R eađ er có th ể q uan trọ n g bởi vì nếu b ạ n cố đọc hoặc ghi lại sa n g file, có th ể b ạn n h ậ n được m ột n goại lệ cho b iết rằ n g tiế n tr ìn h k h ô n g th ể xử lý filẹ
B ạ n cũng có th ể sử dụng k ế t hợp nam espace My v à class Stream R eader. Ví dụ sau đ ây đọc te x t từ m ột file theo từng dòng và h iể n th ị nó tro n g m ột hộp te x t. P hương thức O penT extPileR eader tro n g nam espace My mở một S tream R ead er. Thuộc tín h E ndO íStream biểu th ị sự k ế t th ú c của filẹ Phương thức R eadL ine đọc m ột dòng từ filẹ K hi b ạn h o àn t ấ t m ộ t S tream R eader, b ạn đóng nó lại b ằn g việc gọi phương thức Close:
Dim AIIText As s trin g = LineOfText As s trin g =
Dim StreamToDisplay As StreamReader
StreamToDisplay « MỵComputer,FileSystem.OpenTextFileReăjer( _ "C:\vb10sbs\chap13\text browser\badbills.txt” )
Do Untìl StreamToDispiaỵErdOíStream 'read lines from ííle LineOíText = StreamToDisplaỵReađLíneO
'ađ each line to the AIIText variable AIIText = AIIText & LineOfText & vbCrLf Loop
T e x tB o x U e x t = AIIText ‘ d i s p l a y file StreamToDisplaỵCloseO
6 2 C h ư ơ n g 13: K hảo sát c á c File T e xt và xử lý chuỗi
• • • • • • • Thủ thuật
Các file Text được m ở bằng việc sử dụng cú pháp này dược gọi là các file tuần tự bởi vì bạn phải làm việc với nội dung cùa chúng theo trình tự. T rái lại bạn có th ể tru y cập thông tin trong m ột flle cơ sở dữ liệu theo bất kỳ trìn h tự. (Bạn sẽ tìm hiểu thêm về cơ sở dữ liệu trong chương 18).
Sử dụng phương thức ReadAIÍText
B à i tậ p sau d ây m in h h ọ a cách b ạ n có t h ể sử d ụ n g m ộ t c o n tro l O penPileD ialog v à phương thức R eađA llText để mở m ột file tex t. B ài tậ p n ày cũng m in h h ọ a cách h iể n th ị nội dung của m ột fìle te x t tro n g m ột hộp te x t. (Để b iế t th ê m th ô n g tin về việc sử dụng các control tr ê n ta b Dialog của Toolbox đ ể tạo các hộp th o ạ i chuẩn, xem chương 4).