TOC

This article is currently in the process of being translated into Vietnamese (~99% done).

File handling:

Reading and writing files

Trong chương này, chúng ta sẽ xem đến việc đọc và ghi file với C#. Thật may cho chúng ta, C# thực hiện việc này rất dễ dàng. Đã có lớp File, từ trương mục System.IO cung cấp cho chúng mọi thứ để thực hiện, làm cho việc đọc và ghi file trở nên đơn giản hơn.

Trong ví dụ đầu tiên, chúng ta sẽ xây dựng một trình soạn thảo văn bản một cách đơn giản. Trên thực tế, nó đơn giản đến mức chúng ta chỉ có thể đọc một file và sau đó viết nội dung mới vào trong file đó và chỉ với một dòng văn bản. Nhưng nó cho thấy việc sử dụng lớp File dễ dàng như thế nào:

using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            if(File.Exists("test.txt"))
            {
                string content = File.ReadAllText("test.txt");
                Console.WriteLine("Current content of file:");
                Console.WriteLine(content);
            }
            Console.WriteLine("Please enter new content for the file:");
            string newContent = Console.ReadLine();
            File.WriteAllText("test.txt", newContent);
        }
    }
}

Bạn sẽ thấy rằng chúng ta sử dụng lớp File ở ba vị trí: Chúng ta sử dụng nó để kiểm tra xem file của chúng ta có tồn tại không, sử dụng phương thức ReadAllText() để đọc nội dung của file và sử dụng phương thức WriteAllText() để viết nội dung mới vào file. Chúng ta không sử dụng đường dẫn tuyệt đối, mà chỉ là một tên file đơn giản. File sẽ được lưu trong cùng thư mục với file thực thi chính. Ví dụ này có thể hiểu theo: Kiểm tra file, nếu nó tồn tại, đọc nội dung của file và hiển thị ra màn hình console. Sau đó, nhắc người dùng về nội dung mới và một khi thực hiện, nội dung sẽ được ghi vào file. Thao tác ghi nội dung mới sẽ ghi đè lên nội dung trước đó. Tuy nhiên, chúng ta có thể sử dụng phương thức AppendAllText thay vì cách trên. Thay vào đó, hãy thử thay đổi dòng WriteAllText thành:

File.AppendAllText("test.txt", newContent);

Khi chạy chương trình, bạn sẽ thấy văn bản mới được thêm vào văn bản hiện tại thay vì ghi đè lên nó. Đơn giản là vậy. Nhưng mỗi lần thực hiện chỉ thêm được 1 một dòng văn bản. Chúng ta hãy sáng tạo và thay đổi một chúc. Thay thế các dòng cuối cùng trong ví dụ bằng:

Console.WriteLine("Please enter new content for the file - type exit and press enter to finish editing:");
string newContent = Console.ReadLine();
while(newContent != "exit")
{
    File.AppendAllText("test.txt", newContent + Environment.NewLine);
    newContent = Console.ReadLine();
}

Như bạn thấy, chương trình chạy yêu cầu người dùng nhập từ "exit" khi họ muốn dừng chỉnh sửa file và khi xong xuôi, chúng tôi sẽ thêm đầu vào của người dùng vào file và sau đó tạo dấu nhắc cho một dòng mới từ phương thức Environment.NewLine, để làm giống các dòng văn bản trong thực tế.

Tuy nhiên, thay vì ghi vào file mỗi lần, có 1 giải pháp khác như sau:

Console.WriteLine("Please enter new content for the file - type exit and press enter to finish editing:");
using(StreamWriter sw = new StreamWriter("test.txt"))
{
    string newContent = Console.ReadLine();
    while(newContent != "exit")
    {
        sw.Write(newContent + Environment.NewLine);
        newContent = Console.ReadLine();
    }
}

Cách sử dụng Streams nằm ngoài phạm vi của chương này, nhưng điều thú vị về phương thức này trong ví dụ sau: chỉ mở file một lần, sau đó ghi các thay đổi cho file cho đến khi đúng ý. Trong trường hợp này, đang sử dụng cú phú using() của C #, để đảm bảo rằng tham chiếu file sẽ được đóng lại khi nó vượt quá phạm vi, đó là khi các cú pháp trong {} được thực hiện. Nếu bạn không sử dụng câu lệnh using(), bạn sẽ phải gọi phương thức Close() theo cách thủ công trên đối tượng StreamWriter.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!