Xử lý tệp trong C#: I/O Operacác vấn đề [Ví dụ]

⚡ Tóm tắt thông minh

Các thao tác với tệp trong C# cho phép bạn đọc, ghi, sao chép và xóa tệp bằng cách sử dụng không gian tên System.IO. Ở đây, bạn sẽ học cách sử dụng File.Exists, File.ReadAllLines, File.ReadAllText, File.Copy và File.Delete với các ví dụ mã rõ ràng.

  • 📂 Những gì nó là: Các thao tác với tệp trong C# bao gồm đọc, ghi, sao chép và xóa tệp thông qua không gian tên System.IO.
  • Tệp tin tồn tại: File.Exists(path) kiểm tra xem một tệp có tồn tại hay không trước khi bạn đọc hoặc xóa nó.
  • ???? Đọc hiểu: File.ReadAllLines trả về một mảng chuỗi, trong khi File.ReadAllText trả về toàn bộ tệp dưới dạng một chuỗi duy nhất.
  • 📋 Sao chép và xóa: File.Copy sao chép một tập tin sang đường dẫn mới, còn File.Delete xóa tập tin đó.
  • 🤖 Hỗ trợ từ AI: Các công cụ AI như GitHub Copilot tạo ra mã xử lý tệp C# ngay lập tức.

Tệp C# Operations

C# có nhiều thao tác với tệp. Các thao tác này bao gồm mở tệp, đọc hoặc ghi vào tệp. Có thể có những trường hợp trong đó bạn muốn làm việc trực tiếp với các tệp, trong trường hợp đó bạn sẽ sử dụng các thao tác tệp có sẵn trong C#. Một số thao tác cơ bản với tệp được đề cập dưới đây.

  1. Đọc - Thao tác này là thao tác đọc cơ bản trong đó dữ liệu được đọc từ một tệp.
  2. Viết - Thao tác này là thao tác ghi cơ bản trong đó dữ liệu được ghi vào một tệp. Theo mặc định, tất cả nội dung hiện có sẽ bị xóa khỏi tệp và nội dung mới sẽ được ghi.
  3. Nối thêm - Hoạt động này cũng liên quan đến việc ghi thông tin vào một tập tin. Sự khác biệt duy nhất là dữ liệu hiện có trong tệp không bị ghi đè. Dữ liệu mới cần ghi sẽ được thêm vào cuối tập tin.

Các lệnh I/O cơ bản

C# và .Net có thể làm việc với các tệp với sự trợ giúp của một số lệnh I/O tệp. Chúng ta hãy xem xét một số lệnh này. Trong ví dụ của chúng tôi, chúng tôi sẽ giả sử rằng chúng tôi có một tệp trong ổ D có tên là example.txt.
File sẽ là một file văn bản đơn giản và có 2 dòng như hình bên dưới

  • Guru99 – .Net
  • Guru99 -C#

Trong ví dụ của chúng tôi, chúng tôi sẽ tạo một ứng dụng Console đơn giản và làm việc với các lệnh Tệp I/O của chúng tôi. Ứng dụng bảng điều khiển là ứng dụng cơ bản đã được tạo trong hướng dẫn trước đó. Trong ứng dụng bảng điều khiển, tất cả mã được ghi vào tệp chương trình.cs.

File tồn tại

Phương thức File tồn tại được sử dụng để kiểm tra xem một tệp cụ thể có tồn tại hay không. Vì vậy, bây giờ hãy xem đoạn mã có thể được sử dụng để kiểm tra xem tệp example.txt của chúng tôi có tồn tại hay không. Nhập mã dưới đây vào tệp chương trình.cs.

File tồn tại

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  static void Main(string[] args)
  {
   String path = @"D:\Example.txt";
   
   if (File.Exists(path))
   {
    Console.WriteLine("File Exists");
   }
   Console.ReadKey();
  }
 }
}

Code Giải trình:-

  1. Đầu tiên, chúng tôi đang đặt một biến chuỗi có đường dẫn đến tệp example.txt của chúng tôi.
  2. Tiếp theo, chúng ta sử dụng phương thức File.Exists để kiểm tra xem file có tồn tại hay không. Nếu Tệp tồn tại, giá trị thực sẽ được trả về.
  3. Nếu chúng tôi nhận được giá trị thực và tệp tồn tại thì chúng tôi sẽ viết thông báo “Tệp tồn tại” vào bảng điều khiển.

Khi đoạn mã trên được thiết lập và dự án được thực thi bằng Visual Studio, bạn sẽ nhận được kết quả đầu ra bên dưới.

Đầu ra: -

File tồn tại

Từ kết quả đầu ra ở trên, bạn có thể thấy lệnh File.Exists đã được thực thi thành công và thông báo chính xác được hiển thị trong cửa sổ bảng điều khiển.

Tệp.ReadAlllines

Phương thức này được sử dụng để đọc từng dòng một trong một tệp. Các dòng sau đó được lưu trữ trong một biến mảng chuỗi. Hãy xem một ví dụ. Nhập mã dưới đây vào tệp chương trình.cs.

Tệp.ReadAlllines

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  static void Main(string[] args)
  {
   String path = @"D:\Example.txt";

   String[] lines;
   lines = File.ReadAllLines(path);

   Console.WriteLine(lines[0]);
   Console.WriteLine(lines[1]);

   Console.ReadKey();
  }
 }
}

Code Giải trình:-

  1. Đầu tiên, chúng ta khai báo một biến mảng chuỗi. Điều này sẽ được sử dụng để lưu trữ kết quả sẽ được trả về bằng phương thức File.ReadAllLines.
  2. Tiếp theo, chúng ta sử dụng phương thức File.ReadAllLines để đọc tất cả các dòng từ tệp văn bản của mình. Kết quả sau đó được chuyển đến biến dòng.
  3. Vì chúng ta biết rằng tệp của chúng ta chỉ chứa 2 dòng nên chúng ta có thể truy cập giá trị của các biến mảng thông qua lệnhlines[0] vàlines[1] .

Khi mã trên được đặt và dự án được chạy bằng cách sử dụng Visual Studio, bạn sẽ nhận được kết quả đầu ra dưới đây.

Đầu ra: -

Tệp.ReadAlllines

Từ đầu ra, bạn có thể thấy lệnh File.ReadAllLines trả về cả hai dòng từ tệp example.txt của chúng tôi

Tệp.ReadAllText

Phương pháp này được sử dụng để đọc tất cả các dòng trong một tệp cùng một lúc. Các dòng sau đó được lưu trữ trong một biến chuỗi. Hãy xem một ví dụ. Nhập mã dưới đây vào tệp chương trình.cs.

Tệp.ReadAllText

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    String lines;
    lines = File.ReadAllText(path);
    Console.WriteLine(lines);
 
    Console.ReadKey();
   }
  }
}

Code Giải trình:-

  1. Đầu tiên, chúng ta khai báo một biến chuỗi có tên là Lines. Điều này sẽ được sử dụng để lưu trữ kết quả sẽ được trả về bằng phương thức File.ReadAllText.
  2. Tiếp theo, chúng ta sử dụng phương thức File.ReadAllText để đọc tất cả các dòng từ tệp văn bản của mình. Kết quả sau đó được chuyển đến biến dòng.
  3. Chúng ta có thể trực tiếp sử dụng phương thức Console.Writeline để hiển thị giá trị của biến Lines.

Khi đoạn mã trên được thiết lập và dự án được chạy bằng Visual Studio, bạn sẽ nhận được kết quả đầu ra bên dưới.

Đầu ra: -

Tệp.ReadAllText

Từ đầu ra, bạn có thể thấy lệnh File.ReadAlltext trả về cả hai dòng từ tệp example.txt của chúng tôi

Sao chép tập tin

Phương pháp này được sử dụng để tạo một bản sao của một tập tin hiện có. Hãy xem một ví dụ. Nhập mã dưới đây vào tệp chương trình.cs.

Sao chép tập tin

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
   String path = @"D:\Example.txt";

   String copypath = @"D:\ExampleNew.txt";

   File.Copy(path,copypath);

   Console.ReadKey();
   }
  }
}

Code Giải trình:-

  1. Đầu tiên, chúng ta khai báo một biến chuỗi có tên là path. Đây sẽ là vị trí của tệp example.txt của chúng tôi. Tệp này sẽ là tệp nguồn được sử dụng cho thao tác sao chép.
  2. Tiếp theo, chúng ta khai báo một biến chuỗi có tên là copypath. Đây sẽ là vị trí của một tệp mới có tên là tệp exampleNew.txt. Đây sẽ là tệp đích trong đó nội dung sẽ được ghi từ tệp nguồn example.txt.
  3. Sau đó chúng ta gọi phương thức File.Copy để sao chép file File.txt vào file exampleNew.txt.

Khi mã trên được thiết lập và dự án được chạy bằng Visual Studio, tệp Example.txt sẽ được sao chép vào ExampleNew.txt.

Tệp.Xóa

Phương pháp này được sử dụng để xóa một tập tin hiện có. Hãy xem một ví dụ. Nhập mã dưới đây vào tệp chương trình.cs.

Tệp.Xóa

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
   String path = @"D:\Example.txt";

   File.Delete(path);

   Console.ReadKey();
   }
  }
}

Code Giải trình:-

  1. Đầu tiên, chúng ta khai báo một biến chuỗi có tên là path. Đây sẽ là vị trí của tệp example.txt của chúng tôi. Đây là tập tin sẽ bị xóa.
  2. Tiếp theo, chúng ta gọi phương thức File.Delete để xóa tệp.

Khi mã trên được thiết lập và dự án được chạy bằng Visual Studio, tệp Example.txt sẽ bị xóa khỏi ổ đĩa D.

Tài liệu tham khảo về các phương thức tệp trong C#

Bảng dưới đây tóm tắt các phương thức chính của tệp C# và chức năng của từng phương thức.

Phương thức tập tin Mô tả Chi tiết
File tồn tại Phương thức tồn tại tệp được sử dụng để kiểm tra xem một tệp cụ thể có tồn tại hay không.
Tệp.ReadAlllines Phương thức này được sử dụng để đọc từng dòng một trong một tệp.
Tệp.ReadAllText Phương pháp này được sử dụng để đọc tất cả các dòng trong một tệp cùng một lúc.
Sao chép tập tin Phương pháp này được sử dụng để tạo một bản sao của một tập tin hiện có.
Tệp.Xóa Phương pháp này được sử dụng để xóa một tập tin hiện có.

Câu Hỏi Thường Gặp

Các thao tác với tệp trong C# cho phép bạn đọc, ghi, sao chép, thêm vào và xóa tệp. Hầu hết các phương thức thuộc về lớp System.IO.File, chẳng hạn như File.Exists, File.ReadAllText, File.Copy và File.Delete.

Hãy sử dụng File.Exists(path), phương thức này trả về true nếu tệp tồn tại và false nếu không. Kiểm tra điều này trước khi đọc hoặc xóa tệp để tránh các lỗi ngoại lệ khi chạy.

File.ReadAllLines trả về từng dòng dưới dạng một phần tử của mảng chuỗi, trong khi File.ReadAllText trả về toàn bộ nội dung tệp dưới dạng một chuỗi duy nhất.

Gọi phương thức File.Copy(sourcePath, destinationPath). Phương thức này tạo một tệp mới tại thư mục đích, chứa nội dung của tệp nguồn.

Gọi File.Delete(path). Thao tác này xóa vĩnh viễn tệp, vì vậy hãy xác nhận tệp có tồn tại hay không bằng File.Exists trước để tránh lỗi FileNotFoundException.

Các trợ lý AI như GitHub Copilot tự động hoàn thành các lệnh File.ReadAllText, File.Copy và File.Delete và tạo mã xử lý tệp bằng try-catch từ một đoạn bình luận ngắn mô tả tác vụ.

Đúng vậy. Các công cụ hỗ trợ bởi trí tuệ nhân tạo sẽ tạo ra các phương thức đọc và ghi, đề xuất các phương thức StreamReader hoặc File, và thêm chức năng xử lý ngoại lệ để mã của bạn an toàn hơn.

Thêm dòng `using System.IO;` vào đầu chương trình của bạn. Không gian tên `System.IO` chứa các lớp `File`, `StreamReader` và `Stream`.Writer Các lớp được sử dụng để xử lý tệp.

Tóm tắt bài viết này với: