Trong bài này, chúng ta sẽ thực hiện vài ví dụ cơ bản về nhập xuất file (I/O):
BinaryReader: Đọc kiểu dữ liệu nguyên thủy từ một dòng nhị phân mã hóa xác định
BinaryWriter: Ghi dữ liệu nguyên thủy trong định dạng nhị phân mã hóa xác định
BufferedStream: Lưu trữ tạm thời cho các Stream của bytes.
Directory: Giúp thao tác trên cấu trúc thư mục
DirectoryInfo:Sử dụng để thực hiện cá hoạt động trên thư mục
DriveInfo:Thông tin ổ đĩa
File: Thao tác file
FileInfo:Sử dụng để thực hiện các hoạt động trên file
FileStream: Đọc và ghi bất kỳ vị trí nào trong file
MemoryStream: Dùng để truy cập ngẫu nhiên và xem trực tiếp dữ liệu được lưu trữ trong bộ nhớ.
Path: Thực hiện các hoạt động trên đường dẫn
StreamReader:Dùng để đọc các ký từ một dòng
StreamWriter: Được sử dụng để viết các ký tự cho một dòng
StringReader: Được sử dụng để đọc một chuỗi string từ bộ nhớ đệm
StringWriter: Được sử dụng để viết vào bộ nhớ đệm
Và một vài phương thức khác ............
Các class này nằm trong namespace: System.IO. Mỗi class có rất nhiều phương thức nhưng chúng ta chỉ tìm hiểu sơ qua một vài ví dụ cơ bản trong hôm nay.
1. StreamReader - StreamWriter - Đọc/Ghi File Text Cơ Bản
Ví dụ : RichTextBox
a) Nhập một file txt từ máy của bạn với Browser chọn file.
var dialog = new OpenFileDialog
{
Filter = @"Tập tin (.txt)|*.txt",
Multiselect = false,
Title = @"Chọn tập tin"
};
var dlr = dialog.ShowDialog();
if (dlr != DialogResult.OK) return;
using (var sr = new StreamReader(dialog.FileName))
{
richtxtcontent.Clear();
richtxtcontent.Text = sr.ReadToEnd(); //Đọc toàn bộ nội dung của file
sr.Close();
}
richtxtcontent: là tên thuộc tính của RichTextBox
Bạn nên tạo một biến String toàn cục lưu giữ giá trị đường dẫn vừa mới chọn bên trên bằng cách get path như sau:string fn = dialog.FileName
b) Nhập file txt từ đường dẫn được quy định sẵn:
using (var sr = new StreamReader(@"E:\DemoText.txt"))
{
richtxtcontent.Clear();
richtxtcontent.Text = sr.ReadToEnd(); //Đọc toàn bộ nội dung của file
sr.Close();
}
Nếu viết:
Thì file đó sẽ được xác định trong thư mục debug của projectvar sr = new StreamReader("DemoText.txt")
c) Để lưu file vừa mới mở sau ghi chỉnh sửa ta viết như sau:
var sw = new StreamWriter(@"E:\DemoText.txt");
sw.WriteLine(richtxtcontent.Text);
sw.Flush();
sw.Close();
Bạn nên tạo một biến String toàn cục lưu giữ giá trị đường dẫn này. Ở ví dụ trên, chúng ta đã nhập thẳng đường dẫn cố định
@"E:\DemoText.txt"
d) Để lưu file mới
- Hãy gõ vài dòng vào RichTextBox của bạn và nhấn Button Lưu có mã lệnh như sau:
"Hãy chạy thử đoạn code bên dưới"
FileDialog sfd= new SaveFileDialog();
string fname = null;
sfd.Filter = "Text Files|*.txt";
var res = sfd.ShowDialog();
if (res == DialogResult.Cancel)
{
return;
}
fname = sfd.FileName;
MessageBox.Show(fname);
var sw = new StreamWriter(fname);
sw.WriteLine(richtxtcontent.Text);
sw.Flush();
sw.Close();
Điều đó sẽ lưu mới một file txt cho bạn
Ví dụ: ListView
Đối với list view chỉ khác một chút là dữ liệu nhập vào theo từng dòng. Nên lúc đọc file text bạn sẽ đọc từng dòng và add vào ListView cứ vòng lặp như vậy cho đến cuối file text.
"Hãy chạy thử đoạn code bên dưới"
var dialog = new OpenFileDialog();
dialog .Filter = @"Danh Sách URL (.txt)|*.txt";
dialog .Multiselect = false;
dialog .Title = @"Chọn file Danh Sách URL";
DialogResult dlr = dialog .ShowDialog();
if (dlr == DialogResult.OK)
{
using (var sr = new StreamReader(dialog.FileName))
{
listView1.Items.Clear();
string line;
while ((line = sr.ReadLine()) != null)
{
listVie1.Items.Add(new ListViewItem(line));
}
sr.Close();
}
}
2. BinaryReader - BinaryWriter - Đọc/Ghi File Với Phần Mở Rộng Bất Kỳ
Trong ví dụ này, ta sẽ tạo một tập tin và đọc tập tin này sau đó xuất dữ liệu ra màn hình Console.
"Hãy chạy thử đoạn code bên dưới"
using System;
using System.IO;
namespace ConsoleApplication1
{
internal class Program
{
static void Main(string[] args)
{
BinaryWriter bw;
BinaryReader br;
// Dữ liệu khai báo sẵn
int i = 2013;
int j = 2014;
double d = 3.4567;
bool b = true;
string s = "I am coder !";
//Tạo mới một file
//Phân mở rộng *.br bạn có thể đặt gì bạn thích hoặc không.
// Không quan trọng vì thực chất đó là một tệp nhị phân mã hóa
try
{
bw = new BinaryWriter(new FileStream("mytest.br",
FileMode.Create));
}
catch (IOException e)
{
Console.WriteLine(e.Message );
return;
}
//Ghi giá trị vào file đã tạo
try
{
bw.Write(i); //Ghi giá trị thứ tự: 1
bw.Write(d); //Ghi giá trị thứ tự: 2
bw.Write(b); //Ghi giá trị thứ tự: 3
bw.Write(s); //Ghi giá trị thứ tự: 4
bw.Write(j); //Ghi giá trị thứ tự: 5
}
catch (IOException e)
{
Console.WriteLine(e.Message );
return;
}
bw.Close();
//Đọc giá trị từ file
try
{
br = new BinaryReader(new FileStream("mytest.br", FileMode.Open));
}
catch (IOException e)
{
Console.WriteLine(e.Message);
return;
}
try
{
var vt1 = br.ReadInt32();
Console.WriteLine(" Kiểu Integer vị trí 1: {0}", vt1);
var vt2 = br.ReadDouble();
Console.WriteLine("Kiểu Double vị trí 2: {0}", vt2);
var vt3 = br.ReadBoolean();
Console.WriteLine("Kiểu Boolean vị trí 3: {0}", vt3);
var vt4 = br.ReadString();
Console.WriteLine("Kiểu String vị trí 4: {0}", vt4);
var vt5 = br.ReadInt32();
Console.WriteLine("Kiểu Integer vị trí 5: {0}", vt5);
}
catch (IOException e)
{
Console.WriteLine(e.Message );
return;
}
br.Close();
Console.ReadLine();
}
}
}
- Bạn có thể thấy ví dụ trên sau khi ghi từng giá trị vào file, để đọc bạn cần liệt kê chính xác vị trí giá trị và kiểu của dữ liệu đã ghi trước đó
(Còn tiếp....)
Update:30/12/2013
Xử Lý Cơ Bản Nhập Xuất File I/O Với C# - Phần I
Related Tags :WritingObsolete
No comments:
Post a Comment
Commets Download Photoshop Actions, Lightroom Presets, PSD Template, Mockups, Stocks, Vectors, Fonts. Download free