File Handling
lượt xem 4
download
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#.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: File Handling
- 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 Biên tập: thienthanit@yahoo.com Nguồn: Internet
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Socket Programming and Multithreading
15 p | 389 | 116
-
MÔN TIN HỌC CĂN BẢN - BUỔI THỰC HÀNH 15
11 p | 271 | 73
-
Mã lỗi ý nghĩa trong Pascal
8 p | 515 | 53
-
Viết Password cho Windows
4 p | 151 | 37
-
.Adobe Photoshop CS in 10 Simple Steps or Less P2
20 p | 198 | 22
-
CÁC THAO TÁC TRÊN FILE
3 p | 194 | 21
-
Mastering Photoshop CS3 for Print Design and Production P2
20 p | 94 | 21
-
How do global variables differ from regular (local) variables?
31 p | 95 | 13
-
PHP Tutorial part 15
4 p | 91 | 8
-
Dive Into Python-Chapter 6. Exceptions and File Handling
50 p | 85 | 7
-
Java C5. Exception Handling
53 p | 73 | 7
-
Chapter 7: The Web and E-mail
50 p | 54 | 7
-
Làm Webmaster part 15
5 p | 61 | 6
-
Cisco Systems - Managing Cisco IOS devices
22 p | 60 | 5
-
Bài giảng Phát triển ứng dụng Web: Bài 2 - Nguyễn Hữu Thể
71 p | 36 | 5
-
Cách chụp hình một form trong .NET
3 p | 58 | 3
-
Lecture Java Programming Language: Files and Exception Handling - Ho Dac Hung
12 p | 24 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn