Khi làm việc với C#, việc xử lý dữ liệu đầu vào và đầu ra (I/O) là phần quan trọng của bất kỳ ứng dụng nào. Điều này bao gồm việc đọc dữ liệu từ các nguồn khác nhau như bàn phím, tệp tin hay các nguồn dữ liệu từ mạng, cũng như việc ghi dữ liệu ra các thiết bị, tệp tin hoặc gửi qua mạng.
Một trong những khía cạnh cơ bản của I/O trong C# là sử dụng các lớp từ thư viện .NET Framework, chủ yếu thuộc namespace System.IO
.
1. Đọc và ghi dữ liệu từ bàn phím và màn hình
C# cung cấp các phương pháp đơn giản để tương tác với bàn phím và màn hình thông qua lớp Console
.
a. Đọc dữ liệu từ bàn phím
Console.Write("Nhập tên của bạn: ");
string name = Console.ReadLine();
Console.WriteLine("Xin chào, " + name);
b. Ghi dữ liệu ra màn hình
Console.WriteLine("Đây là một thông báo hiển thị trên màn hình.");
2. Xử lý tệp tin
Làm việc với tệp tin thường là một nhu cầu phổ biến trong lập trình. C# cung cấp các lớp như File
, StreamReader
, StreamWriter
, FileStream
để dễ dàng quản lý việc đọc và viết tệp.
a. Đọc tệp tin
Bạn có thể sử dụng lớp StreamReader
để đọc từ một tệp tin văn bản.
using (StreamReader sr = new StreamReader("path/to/file.txt"))
{
string content = sr.ReadToEnd();
Console.WriteLine(content);
}
b. Ghi tệp tin
Để ghi dữ liệu vào một tệp tin, lớp StreamWriter
thường được sử dụng.
using (StreamWriter sw = new StreamWriter("path/to/file.txt"))
{
sw.WriteLine("Hello, World!");
}
3. Làm việc với luồng dữ liệu
Khi làm việc với các luồng dữ liệu, bạn có thể sử dụng lớp FileStream
để đọc và ghi dữ liệu ở mức byte.
a. Đọc luồng dữ liệu
using (FileStream fs = new FileStream("path/to/file.dat", FileMode.Open))
{
byte[] buffer = new byte[fs.Length];
int bytesRead = fs.Read(buffer, 0, buffer.Length);
Console.WriteLine(BitConverter.ToString(buffer));
}
b. Ghi luồng dữ liệu
using (FileStream fs = new FileStream("path/to/file.dat", FileMode.Create))
{
byte[] buffer = { 0, 1, 2, 3, 4, 5 };
fs.Write(buffer, 0, buffer.Length);
}
4. Xử lý I/O không đồng bộ
Với các chiến lược xử lý I/O không đồng bộ, bạn có thể cải thiện hiệu năng của ứng dụng bằng cách không giữ ứng dụng đợi trong khi I/O hoàn thành. C# hỗ trợ việc này với các phương thức như ReadAsync
và WriteAsync
.
a. Đọc không đồng bộ
using (StreamReader sr = new StreamReader("path/to/file.txt"))
{
string content = await sr.ReadToEndAsync();
Console.WriteLine(content);
}
b. Ghi không đồng bộ
using (StreamWriter sw = new StreamWriter("path/to/file.txt"))
{
await sw.WriteLineAsync("Hello, async world!");
}
5. Làm việc với JSON
JSON là định dạng phổ biến để truyền dữ liệu, và C# cung cấp thư viện System.Text.Json
để xử lý dữ liệu JSON.
a. Đọc JSON từ tệp tin
string jsonString = File.ReadAllText("path/to/file.json");
var jsonData = JsonSerializer.Deserialize<Dictionary<string, object>>(jsonString);
Console.WriteLine(jsonData["key"]);
b. Ghi JSON vào tệp tin
var jsonData = new Dictionary<string, object>
{
{ "key", "value" }
};
string jsonString = JsonSerializer.Serialize(jsonData);
File.WriteAllText("path/to/file.json", jsonString);
Kết luận
Việc xử lý dữ liệu đầu vào và đầu ra trong C# rất linh hoạt và mạnh mẽ. Bằng cách sử dụng các lớp và thư viện được cung cấp bởi .NET Framework, bạn có thể dễ dàng quản lý dữ liệu từ nhiều nguồn và định dạng khác nhau, giúp ứng dụng của bạn trở nên mạnh mẽ và hiệu quả hơn.
Comments