• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

giúp về đọc file text

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

kelalung
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Năm 04/11/2010 4:33 pm
Đến từ: Phường 6 , TP Tuy Hòa, Phú Yên
Has thanked: 1 time

giúp về đọc file text

Gửi bàigửi bởi kelalung » T.Bảy 25/12/2010 2:39 pm

mình dùng streamreader và streamwriter để đọc và lưu file nhưng mình ko biết làm sao để đọc từng dòng và đọc hết các dòng hiện có của file text, bạn nào biết giúp mình nhá
thank very nhiều



Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 25/12/2010 3:03 pm

Bạn không cần dùng StreamReader và StreamWriter nếu nhu cầu chỉ là đọc/ghi file. Bạn có thể dùng thế này:

  1. Dim St As String = IO.File.ReadAllText("C:\Test.txt") 'Đọc hết file
  2. Dim St() As String = IO.File.ReadAllLines("C:\Test.txt") 'Đọc hết các dòng của file
  3. IO.File.WriteAllText("C:\Test.txt", St) 'Ghi chuỗi St vào file
  4. IO.File.WriteAllLines("C:\Test.txt", St) 'Ghi mảng String St vào file, mỗi phần tử là 1 dòng

Hình đại diện của người dùng
bangnhatquang68
Guru
Guru
Bài viết: 791
Ngày tham gia: T.Ba 26/01/2010 12:44 pm
Đến từ: Vĩ tuyến 17
Has thanked: 20 time
Been thanked: 38 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi bangnhatquang68 » T.Bảy 25/12/2010 4:00 pm

kelalung đã viết:\ mình ko biết làm sao để đọc từng dòng


bác đạt trả lời thiếu rùi! :">

theo tui hiểu: ý bạn đó là đọc từng dòng một và có thể cần đọc một dòng bất kì nào đó!
:-S
trong file text!
tức cần thêm câu truy xuất dòng:
ví dụ như: bạn cần dòng thứ 2 thì:
Dim St() As String = IO.File.ReadAllLines("C:\Users\att\Desktop\nguyen.txt")
RichTextBox1.Text = St(2)


hoặc bạn đọc từng dòng 1 thì:

for i =0 to St.GetUpperBound(0)
RichTextBox1.Text += St(i)
next

Hình đại diện của người dùng
lungocqua
Guru
Guru
Bài viết: 1225
Ngày tham gia: T.Ba 18/08/2009 11:51 am
Đến từ: Phú Hữu - Nhơn Trạch - Đồng Nai
Been thanked: 5 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi lungocqua » T.Bảy 25/12/2010 4:35 pm

Thấy cũng vậy chứ gì! Một khi đã dùng ReadAllLines là đã đọc hết kí tự của các dòng trong tập tin đó rồi. Còn lúc hiển thị thì muốn lấy hiện dòng nào thì cứ việc. Chỉ đánh lừa được người ta ở chỗ hiển thị thôi, chứ cái kia vẫn như cũ! :D
Ta đã trở lại và quên hết tất cả! :D

Hình đại diện của người dùng
bangnhatquang68
Guru
Guru
Bài viết: 791
Ngày tham gia: T.Ba 26/01/2010 12:44 pm
Đến từ: Vĩ tuyến 17
Has thanked: 20 time
Been thanked: 38 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi bangnhatquang68 » T.Bảy 25/12/2010 8:06 pm

nhân tiện spam vào đây nhé! buồn buồn hỏi cho vui!
khi đọc text cái ni tui biết! thế đọc từng dòng
ví dụ như: cần dòng thứ 2 thì:
  1. dim demxutu as string
  2. Dim St() As String = IO.File.ReadAllLines("C:\Users\att\Desktop\nguyen.txt")
  3. demxutu = St(2)
  4.  
  5.  

thế tiếp theo:
  1. demxutu+= " xử lý xong ta đem save"
  2.  


vậy đem lưu cái demxutu đó text ở dòng thứ 2 thì làm thế nào?
tức xóa cái dòng thứ 2 tại vị trí dòng 2 đó là một chuỗi mới toanh

Hình đại diện của người dùng
lungocqua
Guru
Guru
Bài viết: 1225
Ngày tham gia: T.Ba 18/08/2009 11:51 am
Đến từ: Phú Hữu - Nhơn Trạch - Đồng Nai
Been thanked: 5 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi lungocqua » T.Bảy 25/12/2010 8:32 pm

Chỉnh sửa cái dòng thứ 2 đó đi rồi lấy dòng 1 và dòng 2 lưu lại xuống dưới tập tin đó.
Ta đã trở lại và quên hết tất cả! :D

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 25/12/2010 9:32 pm

  1. Dim St As String() = File.ReadAllLines("C:\Test.INP")
  2. St(2) = "Refined!"
  3. File.WriteAllLines("C:\Test.OUT", St)

Hình đại diện của người dùng
bangnhatquang68
Guru
Guru
Bài viết: 791
Ngày tham gia: T.Ba 26/01/2010 12:44 pm
Đến từ: Vĩ tuyến 17
Has thanked: 20 time
Been thanked: 38 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi bangnhatquang68 » T.Bảy 25/12/2010 9:35 pm

không!
ý tui là đem dòng 2 đi sửa sửa gì đó! lưu lại tại đó luôn:
ví dụ:
- lúc đầu file txt của ta là:
......................
caulacbovb
chuyen mục vb6 nhiều thành viên
hoan hô oclungtung
cảm ơn bác đạt
chúc các u hậu nôen zuize
.......................

sửa dòng 2,3:demxutu = St(2)
thì file txt:
......................
caulacbovb
chuyen mục vb6 nhiều thành viên hơn vb.net
hoan hô lungocqua
cảm ơn bác đạt
chúc các u hậu nôen zuize
...................

rùi đem lưu thôi! ;))
vậy lưu thế nào?
code?

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 25/12/2010 10:02 pm

Không hiểu muốn gì luôn

  1. Dim St As String() = File.ReadAllLines("C:\Test.INP")
  2. St(1) &= "hơn vb.net"
  3. St(2) = "hoan hô lungocuqa"
  4. File.WriteAllLines("C:\Test.OUT", St)

Hình đại diện của người dùng
bangnhatquang68
Guru
Guru
Bài viết: 791
Ngày tham gia: T.Ba 26/01/2010 12:44 pm
Đến từ: Vĩ tuyến 17
Has thanked: 20 time
Been thanked: 38 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi bangnhatquang68 » T.Bảy 25/12/2010 10:28 pm

ý em là
- đem cái file đó load vào mảng st
- lấy dòng thứ 2 đem đi sửa
- lưu lại
=> file đó vẫn là file đó thôi: test.INP vẫn là test.INP không phải save ra file mới

giống như bác mở file txt lên bằng notepad rùi sửa xong bấm save

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 25/12/2010 11:39 pm

Thì ở trên chỉ là VD mẫu thôi, muốn lưu file cũ thì cứ để nguyên tên file, có sao đâu. Còn muốn sửa bao nhiêu dòng tuỳ ý, chính là cái St đấy!

Hình đại diện của người dùng
bangnhatquang68
Guru
Guru
Bài viết: 791
Ngày tham gia: T.Ba 26/01/2010 12:44 pm
Đến từ: Vĩ tuyến 17
Has thanked: 20 time
Been thanked: 38 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi bangnhatquang68 » CN 26/12/2010 9:04 am

thank bác đạt nhé!

KhucGo
Bài viết: 1
Ngày tham gia: T.Bảy 19/02/2011 6:29 pm
Đến từ: Lac Hong University
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi KhucGo » T.Bảy 19/02/2011 6:32 pm

Dim st() as string

St() là 1 mảng động ak sư huynh ?
và tại sao khi readallLines lại phải sài mảng mà ko sài đc biến string St thui ?

Hình đại diện của người dùng
lungocqua
Guru
Guru
Bài viết: 1225
Ngày tham gia: T.Ba 18/08/2009 11:51 am
Đến từ: Phú Hữu - Nhơn Trạch - Đồng Nai
Been thanked: 5 time
Liên hệ:

Re: giúp về đọc file text

Gửi bàigửi bởi lungocqua » T.Bảy 19/02/2011 7:12 pm

Đúng rồi. St() là mảng đông, không khai báo trước số phần tử cần dùng. Khi đọc ReadAllLines phải lưu vào mảng vì mỗi dòng nó sẽ lưu vào trong một phần tử của mảng. Nếu lưu vào một biến thì n dòng trong tập tin đó sẽ dồn lại 1 dòng và sẽ bị mất định dạng so với tập tin gốc và như vậy thì sẽ rất khó cho việc xử lí! :D Nếu mà bạn khó khăn khi xử lí mảng thì hãy thử lưu nó vào ArrayList hay List(Of String).
  1.         Dim st() As String = System.IO.File.ReadAllLines("C:\debug1214.txt")
  2.         'MsgBox(st.Length) 'Kiểm tra số phần tử của mảng
  3.         Dim array As New ArrayList
  4.         array.AddRange(System.IO.File.ReadAllLines("C:\debug1214.txt"))
  5.         'MsgBox(array.Count) 'Kiểm tra số phần tử của mảng
  6.         Dim lis As New List(Of String)
  7.         lis.AddRange(System.IO.File.ReadAllLines("C:\debug1214.txt"))
  8.         'MsgBox(lis.Count) 'Kiểm tra số phần tử của danh sách
Ta đã trở lại và quên hết tất cả! :D

qhhqnavy
Thành viên tích cực
Thành viên tích cực
Bài viết: 102
Ngày tham gia: T.Bảy 26/02/2011 10:45 am
Đến từ: Hải Phòng City

Re: giúp về đọc file text

Gửi bàigửi bởi qhhqnavy » T.Sáu 01/04/2011 6:40 pm

Trong C# thì việc đọc/ghi dữ liệu thế nào anh Dat?

qhhqnavy
Thành viên tích cực
Thành viên tích cực
Bài viết: 102
Ngày tham gia: T.Bảy 26/02/2011 10:45 am
Đến từ: Hải Phòng City

Re: giúp về đọc file text

Gửi bàigửi bởi qhhqnavy » T.Sáu 01/04/2011 7:08 pm

mình vừa search được bài post lên cho mọi ngừoi xem nhé :
Việc đọc và ghi ra một tập tin là việc làm cần thiết trong trường hợp chúng ta muôn in ra kết quả chương trình ra một file, lấy nối dung từ một file để sử dụng trong chương trình của mình… Trong môi trường .net với ngôn ngữ C# nói riêng và các ngôn ngữ khác nói chung, việc thực hiện tương đối dễ dàng với sự hỗ trợ đắc lực của lớp trình bày nội dung gọi chung là stream. Bài viết này sẽ có trình bày ngắn gọn việc đọc và ghi file trong C# dựa trên các lớp sẵn có của .NET, với mỗi trường hợp sẽ có chương trình Demo cụ thể viết trên Visual studio 2010.

1. Giới thiệu về Stream

- Đọc và viết dữ liệu sẽ được thực hiện thông qua lớp stream. Stream là dòng dữ liệu chảy đi. Đây là một thực thể (entity) có khả năng nhận được hoặc tạo ra một “nhúm” dữ liệu. System.IO.Stream là một lớp abstract định nghĩa một số thành viên chịu hỗ trợ việc đọc/viết đồng bộ (synchronus) hoặc không đồng bộ (asynchronous) đối với khối trữ tin (nghĩa là một tập tin trên đĩa hoặc tập tin trên ký ức).

- Vì Stream là một lớp abstract, nên bạn chỉ có thể làm việc với những lớp được dẫn xuất từ Stream. Các hậu duệ của Stream tượng trưng dữ liệu như là một dòng dữ liệu thô dạng bytes (thay vì dữ liệu dạng văn bản). Ngoài ra, các lớp được dẫn xuất từ Stream hỗ trợ việc truy tìm (seek) nghĩa là một tiến trình nhận lấy và điều chỉnh vị trí trên một dòng chảy. Trước khi tìm hiểu những chức năng mà lớp Stream cung cấp, bạn nên xem qua các thành viên của lớp Stream.

- Ý tưởng của stream đã có từ lâu. Một stream là một đối tượng dùng để chuyển dữ liệu. Dữ liệu có thể được truyền theo hai hướng:

Nếu dữ liệu được truyền từ nguồn bên ngoài vào trong chương trình của bạn, ta gọi là đọc dữ liệu

Nếu dữ liệu được truyền từ chương trình của bạn ra nguồn bên ngoài , ta gọi là viết dữ liệu

- Thường thì nguồn bên ngoài sẽ là một file, ngoài ra nó còn bao gồm cả trường hợp sau:

Đọc hoặc ghi dữ liệu trên mạng dùng giao thức mạng

Đọc hoặc ghi đến một đường ống chỉ định

Đọc hoặc ghi đến một vùng của bộ nhớ
Continue --->

qhhqnavy
Thành viên tích cực
Thành viên tích cực
Bài viết: 102
Ngày tham gia: T.Bảy 26/02/2011 10:45 am
Đến từ: Hải Phòng City

Re: giúp về đọc file text

Gửi bàigửi bởi qhhqnavy » T.Sáu 01/04/2011 7:11 pm

2. Làm việc với file nhị phân (binary files)

Reading and writing to binary files thường được làm việc với lớp FileStream .

a. Làm việc với FileStream

- Lớp FileStream đem lại việc thi công cho những thành viên của lớp abstract Stream theo một thể thức thích hợp đối với các file-base streaming giống như các lớp DirectoryInfo và FileInfo, lớp FileStream cho phép mở những tập tin hiện hữu cũng như tạo mới file. Khi tạo tập tin , lớp FileStream thường dùng những enum FileMode, FileAccess và FileShare.

Mã: Chọn hết

// tạo một tập tin mới trên thư mục làm việc
 FileStream myFStream = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);

b. The FileStream Class:

FileStream được sử dụng đọc và viết dữ liệu vào hoặc từ một file. Để khởi tạo một FileStream, bạn cần 4 phần sau:

file bạn muốn truy xuất .

mode, cho biết bạn muốn mở file như thế nào.

access, cho biết bạn muốn truy xuất file như thế nào – bạn định đọc hoặc viết file hoặc cả hai.

share access – khả năng truy xuất file.

Enumeration : Values
FileMode : Append, Create, CreateNew, Open, OpenOrCreate, or Truncate
FileAcess : Read, ReadWrite, or Write.
FileShare : Inheritable, None, Read, ReadWrite, or Write.
3. Làm việc với BufferedStream

- Khi bạn gọi hàm Read() thì một công tác đọc dữ liệu cho đầy buffer từ đĩa được tiến hành. Tuy nhiên, để cho có hiệu năng, hệ điều hành thường phải đọc trong một lúc một khối lượng lớn dữ liệu tạm thời trữ trên bufer. Buffer hoạt động như một kho hàng.

- Một đối tượng Bufered stream cho phép hệ điều hành tạo buffer riêng cho mình dùng, rồi đọc dữ liệu vào hoặc viết dữ liệu lên ổ đĩa theo một khối lượng dữ liệu nào đó mà hệ điều hành thấy là có hiệu năng. Tuy nhiên, bạn xũng có thể ấn định chiều dài khối dữ liệu. Nhưng bạn nhớ cho là buffer sẽ chiêmd chỗ trong ký ức chứ không phải trên đĩa từ. Hiệu quả sử dụng đến buffer là ciệc xuất nhập dữ liệu chạy nhanh hơn.

- Một đối tượng BufferedStream được hình thành xung quanh một đối tượng Stream mà bạn đã tạo ra trước đó. Muốn sử dụng đến một BufferedStream bạn bắt đầu tạo một đối tượng Stream thông thường như trong ví dụ:

Mã: Chọn hết

stream inputstream = File.OpenRead(@"C;\test\source\folder3.cs ");

stream outputstream = File.Openwrite(@"C:test\source\folder3.bak");


- Một khi bạn đã có stream bình thường, bạn trao đối tượng này cho hàm constructor của buffere stream:

Mã: Chọn hết

BufferedStream bufInput = new BufferedStream(inputstream);

BufferedStream bufOutput = new BufferedStream(outputstream);


- Sau đó, bạn sử dụng BufferedStream như là một stream bình thường, bạn triệu gọi hàm Read() hoặc Write() như bạn đã làm trước kia. Hệ điều hành lo việc quản lý vùng đêm:

Mã: Chọn hết

while ((bytesRead = bufInput.Read(buffer, 0, SIZE_BUFF)) > 0)
{
    bufOutput.Write(buffer, 0, bytesRead);

}


- Chỉ có một khác biệt mà bạn phải nhớ cho là phải tuôn ghi (flush) nội dung của buffer khi bạn muốn bảo đảm là dữ liệu được ghi lên đĩa.

Mã: Chọn hết

bufOutput.Flush();


- Lệnh trên bảo hệ điều hành lấy toàn bộ dữ liệu trên buffer cho tuôn ra ghi lên tập tin trên đĩa.
Continue --->
Bài hơi dài, các bạn cố gắng theo dõi nhé

qhhqnavy
Thành viên tích cực
Thành viên tích cực
Bài viết: 102
Ngày tham gia: T.Bảy 26/02/2011 10:45 am
Đến từ: Hải Phòng City

Re: giúp về đọc file text

Gửi bàigửi bởi qhhqnavy » T.Sáu 01/04/2011 7:14 pm

4. Làm việc với những tập tin văn bản

- Nếu bạn biết file bạn đang làm việc (đọc/viết) thuộc loại văn bản nghĩa là dữ liệu kiểu string, thì bạn nên nghĩ đến việc sử dụng đến các lớp StreamReader và StreamWriter. Cả hai lớp theo mặc nhiên làm việc với ký tự Unicode. Tuy nhiên bạn có thể thay đổi điều này bằng cách cung cấp một đối tượng quy chiếu được cấu hình một cách thích hợp theo System.Text.Reference. Nói tóm lại hai lớp này được thiết kế để thao tác dễ dàng các tập tin loại văn bản.

- Lớp StreamReader được dẫn xuất từ một lớp abstract mang tên TextReader cũng giống như String Reader. Lớp cơ bản TextReader cung cấp một số chức năng hạn chế cho mỗi hậu duệ, đặc biệt khả năng đọc và “liếc nhìn” (peek) lên một dòng ký tự (character stream).

- Lớp StreamWriter và StringWriter cũng được dẫn xuất từ một lớp abstract mang tên TextWriter; lớp này định nghĩa những thành viên cho phép các lớp dẫn xuât viết những dữ liệu văn bản lên một dòng văn bản nào đó.

- Các hàm thành viên của lớp TextWriter

Close() : Cho đóng lại các writer và giải phóng mọi nguồn lực chiếm dụng

Flush() : Cho xoá sạch tất cả các buffer đối với writer hiện hành

NewLine : Thuộc tính này dùng làm hằng sang hằng

Write() : Viết một hằng lên text stream không có newline constant

WriteLine() : Viết một hằng lên text stream có newline constant

qhhqnavy
Thành viên tích cực
Thành viên tích cực
Bài viết: 102
Ngày tham gia: T.Bảy 26/02/2011 10:45 am
Đến từ: Hải Phòng City

Re: giúp về đọc file text

Gửi bàigửi bởi qhhqnavy » T.Sáu 01/04/2011 7:16 pm

Cuối cùng là ví dụ : viết một tập tin văn bản:

- Ví dụ ReadWriteText trình bày cách sử dụng của lớp StreamReader và StreamWriter. Nó trình bày file được đọc vào và hiển thị Nó cũng có thể lưu file. Nó sẽ lưu bất kỳ file ở định dạng Unicode .

- Màn hình trình bày ReadWriteText được dùng hiển thị ở chương trình demo. Chúng ta có thể đọc được ở nhiều định dạng file khác.

- Chúng ta nhìn vào đoạn mã sau. Trước tiên ta thêm câu lệnh using , Từ đây bên cạnh System.IO, chúng ta sử dụng lớp StringBuilder từ System.Text namespace để xây dựng chuỗi trong textbox:

Mã: Chọn hết

using System.Text;
using System.IO;

- Tiếp theo chúng ta thêm các trường cho lớp main form:

Mã: Chọn hết

public partial class Form1 : Form
{
     private OpenFileDialog FileOpen = new OpenFileDialog();
     private string chooseFile;


- Chúng ta cũng cần thêm vài chuẩn mã Windows Forms để thực hiện điều khiển cho menu và hộp thoại:

Mã: Chọn hết

public Form1()
{
    InitializeComponent();
    this.MaximizeBox = false;
    this.StartPosition = FormStartPosition.CenterScreen;
    FileOpen.FileOk += new CancelEventHandler(FileOpen_FileOk);
}

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    FileOpen.ShowDialog();
}
void FileOpen_FileOk(object sender, CancelEventArgs e)
{
    chooseFile = FileOpen.FileName;
    this.Text = Path.GetFileName(chooseFile);
    DisplayFile();
}

- Từ đây chúng ta thấy mỗi khi người sử dụng nhấn OK để chọn một file trong hộp thoại, chúng ta gọi phương thức DisplayFile(), dùng để đọc file.


Mã: Chọn hết

private void DisplayFile()
{
    int nCols = 16;
    FileStream inStream = new FileStream(chooseFile, FileMode.Open,
                                                     FileAccess.Read);
    long nBytesToRead = inStream.Length;
    if (nBytesToRead > 65536 / 4)
        nBytesToRead = 65536 / 4;
    int nLines = (int)(nBytesToRead / nCols) + 1;
    string[] lines = new string[nLines];
    int nBytesRead = 0;
    for (int i = 0; i < nLines; i++)
    {
        StringBuilder nextLine = new StringBuilder();
        nextLine.Capacity = 4 * nCols;
        for (int j = 0; j < nCols; j++)
        {
            int nextByte = inStream.ReadByte();
            nBytesRead++;
            if (nextByte < 0 || nBytesRead > 65536)
                break;
            char nextChar = (char)nextByte;
            if (nextChar < 16)
                nextLine.Append(" x0" + string.Format("{0,1:X}",
                                                     (int)nextChar));
            else if
               (char.IsLetterOrDigit(nextChar) ||
                                     char.IsPunctuation(nextChar))
                nextLine.Append("  " + nextChar + " ");
            else
                nextLine.Append(" x" + string.Format("{0,2:X}",
                                       (int)nextChar));
        }
        lines[i] = nextLine.ToString();
    }

    inStream.Close();
    richTextBox.Lines = lines;

}

- Như vậy chúng ta đã mở được file nhờ phương thức DisplayFile(). bây giờ chúng ta xử lý cách để lưu file chúng ta thêm đoạn mã SaveFile(). Bạn nhìn vào phương thức SaveFile() chúng ta viết mỗi dòng ra textbox, bằng stream StreamWriter

Mã: Chọn hết

void SaveFile()
{
    StreamWriter sw = new StreamWriter(chooseFile, false,
                          Encoding.Unicode);
    foreach (string line in richTextBox.Lines)
        sw.WriteLine(line);
    sw.Close();
}


- Bây giờ ta xem xét làm thế nào file được đọc vào. Trong quá trình xử lý thực sự chúng ta không biết có bao nhiêu dòng sẽ được chứa. Chúng ta giải quyết vấn đề này bằng cách ban đầu đọc file vào trong lớp đại diện StringCollection, được nằm trong System.Collections.Specialized namespace. Lớp này được thiết kế để giữ một bộ của chuỗi có thể được mở rộng một cách linh hoạt. Nó thực thi hai phương thức : Add(), nó thêm một chuỗi vào bộ chọn lựa (collection) , và CopyTo(), nó sao chép string collection vào trong một mảng. Mỗi thành phần của đối tượng StringCollection object sẽ giữ 1 hàng của file.

- Bây giờ chúng ta sẽ xem xét phương thức ReadFileIntoStringCollection() . Chúng ta sử dụng StreamReader để đọc trong mỗi hàng. Khó khăn chính là cần đếm ký tự đọc để chắc chúng ta không vượt quá khả năng chứa đựng của textbox:

Mã: Chọn hết

private StringCollection ReadFileIntoStringCollection()
{
    const int MaxBytes = 65536;
    StreamReader sr = new StreamReader(chooseFile);
    StringCollection result = new StringCollection();
    int nBytesRead = 0;
    string nextLine;
    while ((nextLine = sr.ReadLine()) != null)
    {
        nBytesRead += nextLine.Length;
        if (nBytesRead > MaxBytes)
            break;
        result.Add(nextLine);
    }
    sr.Close();
    return result;
}

OK. Vậy là xong.
Chúc các bạn thành công.

qhhqnavy
Thành viên tích cực
Thành viên tích cực
Bài viết: 102
Ngày tham gia: T.Bảy 26/02/2011 10:45 am
Đến từ: Hải Phòng City

Re: giúp về đọc file text

Gửi bàigửi bởi qhhqnavy » T.Sáu 01/04/2011 7:28 pm

Quên mất đây là demo :
http://www.mediafire.com/?j3pgtnf8abfrvbw


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.7 khách