1. Trang chủ
  2. » Công Nghệ Thông Tin

File Handling ppt

7 157 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 528,36 KB

Nội dung

Biên tập: thienthanit@yahoo.com Nguồn: Internet File Handling đề cập đến việc đọc và ghi file, đây là một trong những thao tác cơ bản trong các ngôn ngữ lập trình. Phần này sẽ giới thiệu một số phương pháp truy cập file dùng trong C#. 1. Các loại Stream Class Các Stream hay còn gọi là Luồng dùng trong C# đều nằm trong namespace System.IO. Có một số Stream class cơ bản sau:  FileStream  MemoryStream  BufferedStream  StreamReader  StreamWriter  BinaryReader  BinaryWriter  NetworkStream  CryptoStream Các Stream class này có thể được chia thành 2 loại:  Implementation class: là những Stream thao tác trực tiếp với File hay nguồn dữ liệu, gồm: FileStream, MemoryStream, NetworkStream  Wrapper class: là những Stream thường được sử dụng cùng với các Implementation class, gồm: BufferedStream, StreamReader, StreamWriter, BinaryReader, BinaryWriter, CryptoStream 2. FileMode và FileAccess FileMode và FileAccess là 2 thuộc tính mà ta phải suy nghĩ đến trước khi thực hiện thao tác với File. FileMode  Append: Mở file tồn tại và ghi thêm vào cuối file, trường hợp file không tồn tại sẽ tạo mới. Chỉ thực hiện thao tác ghi  Create: Tạo file mới, trường hợp file đã tồn tại sẽ bị ghi đè. Chỉ thực hiện thao tác ghi.  CreateNew: Tạo file mới, trường hợp file đã tồn tại sẽ phát sinh IOException. Chỉ thực hiện tao tác ghi  Open: Mở một file đã tồn tại, trường hợp file không tồn tại phát sinh FileNotFoundException. Có thể thực hiện đọc và ghi file  OpenOrCreate: Mở một file đã tồn tại, sẽ tạo file mới khi không tồn tại file. Có thể thực hiện đọc và ghi file  Truncate: Mở một file đã tồn tại, xóa hết nội dung file về 0 byte. Chỉ thực hiện thao tác ghi file. FileAccess  Read: Chế độ ghi file  ReadWrite: Dữ liệu có thể được đọc và ghi vào file  Write: Chế độ ghi dữ liệu vào file 3. MemoryStream and BufferedStream class 3.1. MemoryStream MemoryStream là class dùng để đọc và ghi dữ liệu vào bộ nhớ. Một số phương thức đọc và ghi được dùng trong class:  Read(): Đọc dữ liệu từ MemoryStream và ghi vào một vùng đệm  ReadByte(): Đọc một byte từ MemoryStream  Write(): Ghi dữ liệu từ vùng đệm vào MemoryStream  WriteByte(): Ghi một byte dữ liệu vào MemoryStream Biên tập: thienthanit@yahoo.com Nguồn: Internet Vì dụ về MemoryStream. Trong ví dụ này, ta sẽ ghi dữ liệu lên MemoryStream và sau đó đổ dữ liệu từ MemoryStream vào file. public void WriteToFile_MemoryStream(string fileName, FileMode fileMode, FileAccess fileAccess) { MemoryStream memoryStream = null; FileStream fileStream = null; memoryStream = new MemoryStream(64); // Write a number to memory as byte int i = 10; memoryStream.WriteByte((byte)i); // Write a string to memory as text string content = "Write To File Using Memory Stream!"; byte[] stringBuffer = new UTF8Encoding(true).GetBytes(content); memoryStream.Write(stringBuffer, 0, stringBuffer.Length); // Create FileStream fileStream = new FileStream(fileName, fileMode, fileAccess); // Write content from MemoryStream to FileStream memoryStream.WriteTo(fileStream); // Close streams memoryStream.Close(); fileStream.Close(); } 3.2. BufferedStream BufferedStream là class được dùng để đọc và ghi dữ liệu vào vùng đệm. Class này có 2 hàm tạo (Constructor) Biên tập: thienthanit@yahoo.com Nguồn: Internet  public BufferedStream (Stream stream);  public BufferedStream (Stream stream, int bufferSize); BufferedStream là một wrapper-class nên nó phải sử dụng cùng với một loại Stream khác. Trong trường hợp khợp khởi tạo không chỉ định tham số bufferSize, bufferSize mặc định là 4096 bytes. BufferedStream cũng có các phương thức đọc và ghi dữ liệu giống như MemoryStream. Vì dụ về BufferedStream public void WriteToFile_BufferedStream(string fileName, FileMode fileMode, FileAccess fileAccess) { FileStream fileStream = new FileStream(fileName, fileMode, fileAccess); BufferedStream bufferStream = new BufferedStream(fileStream); // Write integer to stream int[] arr = new int[] { 1, 2, 3, 4, 5 }; foreach (int i in arr) { bufferStream.WriteByte((byte)i); } // Write break-line character bufferStream.WriteByte(13); bufferStream.WriteByte(10); // Write char to stream string list = "Hello World!"; foreach (char c in list.ToCharArray()) { bufferStream.WriteByte((byte)c); } bufferStream.WriteByte(13); bufferStream.WriteByte(10); Biên tập: thienthanit@yahoo.com Nguồn: Internet // Write a string to stream string content = "This is the demo program using Buffered Stream!"; // GetBytes will convert a string to byte[] byte[] bufferString = new UTF8Encoding(true).GetBytes(content); bufferStream.Write(bufferString, 0, bufferString.Length); bufferStream.Close(); } 4. StreamReader và StreamWriter class StreamReader và StreamWriter là 2 class được dùng để thao tác với các file văn bản. 4.1. StreamReader static void Main(string[] args) { string fileName = @"C:\File.txt"; ReadFile(new FileStream(fileName, FileMode.Open, FileAccess.Read)); } static void ReadFile(Stream sourceStream) { StreamReader streamReader = new StreamReader(sourceStream); string line = string.Empty; while ((line = streamReader.ReadLine()) != null) { System.Console.WriteLine(line); } Biên tập: thienthanit@yahoo.com Nguồn: Internet streamReader.Close(); } 4.2. StreamWriter static void Main(string[] args) { string fileName = @"C:\File.txt"; WriteToFile(new FileStream(fileName, FileMode.Create, FileAccess.Write)); } static void WriteToFile(Stream sink) { // Create write stream StreamWriter streamWriter = new StreamWriter(sink); // Write content to file streamWriter.Write(content); streamWriter.WriteLine(true); streamWriter.WriteLine(false); streamWriter.WriteLine('c'); streamWriter.WriteLine("Write something to file"); streamWriter.WriteLine(0.14); streamWriter.WriteLine("My name is {0}", "HaPN"); streamWriter.Close(); } Biên tập: thienthanit@yahoo.com Nguồn: Internet 5. BinaryReader và BinaryWriter class BinaryReader và BinaryWriter kế thừa từ System.Object và được sử dụng để thao tác với dữ liệu nhị phân. BinaryWriter là class dùng để ghi dữ liệu nhị phân từ một biến C#, VB.net vào một luồng xác định. Có 2 phương thức được sử dụng chính Write() và Close(). 5.1. BinaryWriter public void WriteBinaryFile(Stream sink) { // Create binary writer to write data to file BinaryWriter binaryWriter = new BinaryWriter(sink); // Write boolean value binaryWriter.Write(true); binaryWriter.Write(false); // Write byte value binaryWriter.Write((byte)21); binaryWriter.Write(new byte[] { 1, 2, 3, 4 }); binaryWriter.Write('z'); binaryWriter.Write(new char[] {'A', 'B', 'C'}); binaryWriter.Write(new Decimal(12.21)); binaryWriter.Write("Hello!"); binaryWriter.Close(); } Trong phương thức Write() của BinaryWriter không hỗ trợ việc ghi 1 object, struct vào file giống như đối với lập trình C. Để thực hiện điều này, chúng ta sẽ sử dụng Serialization. 5.2. BinaryReader BinaryReader là class được sử dụng để đọc dữ liệu nhị phân. Có rất nhiều phương thức được dùng trong BinaryReader, mỗi phương thức được dành riêng cho mỗi loại dữ liệu khác nhau. public void ReadBinaryFile(Stream sourceStream) { BinaryReader binaryReader = new BinaryReader(sourceStream); Biên tập: thienthanit@yahoo.com Nguồn: Internet bool bTrue = binaryReader.ReadBoolean(); Console.WriteLine(bTrue); bool bFalse = binaryReader.ReadBoolean(); Console.WriteLine(bFalse); byte b = binaryReader.ReadByte(); Console.WriteLine(b); byte[] byteArray = binaryReader.ReadBytes(4); Console.WriteLine(byteArray); char ch = binaryReader.ReadChar(); Console.WriteLine(ch); char[] charArray = binaryReader.ReadChars(3); Console.WriteLine(charArray); decimal d = binaryReader.ReadDecimal(); Console.WriteLine(d); string s = binaryReader.ReadString(); Console.WriteLine(s); binaryReader.Close(); } Source code FileHandler.rar . BufferedStream public void WriteToFile_BufferedStream(string fileName, FileMode fileMode, FileAccess fileAccess) { FileStream fileStream = new FileStream(fileName, fileMode, fileAccess); BufferedStream. MemoryStream vào file. public void WriteToFile_MemoryStream(string fileName, FileMode fileMode, FileAccess fileAccess) { MemoryStream memoryStream = null; FileStream fileStream = null;. 2. FileMode và FileAccess FileMode và FileAccess là 2 thuộc tính mà ta phải suy nghĩ đến trước khi thực hiện thao tác với File. FileMode  Append: Mở file tồn tại và ghi thêm vào cuối file,

Ngày đăng: 12/07/2014, 19:20

Xem thêm

TỪ KHÓA LIÊN QUAN

w