Đọc ghi file trong C#

Đọc ghi file trong C#

Đọc ghi file trong C# – Trong mỗi một ngôn ngữ lập trình, việc đọc ghi file là một điều cực kì quan trọng. Vậy nên, trong bài viết này Lập trình không khó sẽ hướng dẫn bạn cách để thao tác với file, đọc ghi file trong ngôn ngữ lập trình C#.

Tại sao chúng ta đọc ghi file

  • Các dữ liệu sẽ được lưu ở biến của chương trình, và nó sẽ biến mất ngay sau khi chương trình kết thúc. Sử dụng file để lưu trữ dữ liệu cần thiết, để đảm bảo dữ liệu của chúng ta không bị mất ngay cả khi chương trình ngừng chạy.
  • File có thể được dùng làm file input nếu dữ liệu đầu vào của chương trình quá lớn mà không thể nhập bằng tay, và chương trình của bạn có thể đọc file mỗi lần khi chạy.
  • Dễ dàng sao chép di chuyển qua lại giữa các thiết bị với nhau.

Các kiểu file

Trong giới hạn bài viết này chúng ta sẽ chỉ tìm hiểu về file văn bản (text files) là những file thường có đuôi .txt . Loại file này có thể dễ dàng được tạo bởi các trình soạn thảo (text editor) khác nhau như: Notepad, Sublime Text, Visual Studio Code, Nodepad++ ….

Các thao tác với file

Trong ngôn ngữ lập trình C#, có một số thao tác chính với file như sau:

  1. Đọc thông tin từ file (nếu file đã tồn tại).
  2. Ghi thông tin vào file (nếu file chưa tồn tại thì sẽ tự động tạo file mới).

Thao tác đọc ghi file trong C#

Làm việc với file trong C# (đọc ghi file trong C#) đã được class File có sẵn của C# hỗ trợ. Qua đó việc thao tác đọc ghi file trong C# là một điều cực kì dễ dàng.

Để có thể sử dụng được class File trong C# đã cần phải khai báo thêm thư viện System.IO như sau:

Thao tác đọc file trong C#

Để đọc được dữ liệu từ một file bằng C#. Chúng ta sử dụng các phương thức như ReadAllText và ReadAllLines sẽ được trình bày ngay sau đây.

Ở đây, mình đã chuẩn bị 1 file là test.txt có nội dung như sau:

Phương thức ReadAllText

Để đọc được nội dung trong file test.txt ta sử dụng phương thức ReadAllText phương thức này sẽ trả về một giá trị kiểu string là nội dung của file, sau đây là chương trình:

Sau khi chạy chương trình trên màn hình sẽ hiện ra kết quả:

Như các bạn có thể thấy, phương thức ReadAllText sẽ đọc tất cả các dòng trong file test.txtvà in ra cùng một lúc. Nhưng giờ chúng ta muốn đọc từng dòng trong file đó để biết được dòng đó có chưa những dữ liệu thì gì phải làm sao ? Vì vậy, chúng ta phải dùng đến phương thức ReadAllLines sẽ được trình bày ở phần sau của bài viết.

Phương thức ReadAllLines

Để đọc được dữ liệu từng dòng trong file test.txt ta sử dụng phương thức ReadAllLines, phương thức này trả về cho chúng ta giá trị kiểu string[] (mảng kiểu string). Từ đó, ta có thể dễ dàng truy xuất từng dòng của dữ liệu:

Sau đây là kết quả của chương trình trên:

Ta có thể thấy trên chương trình, giá trị trả về của File.ReadAllLines được lưu lại trong biến a như vậy chúng ta có thể dễ dàng truy xuất thông qua chỉ số như một mảng bình thường.

Thao tác ghi file trong C#

Như vậy, chúng ta đã tìm hiểu xong cách để đọc dữ liệu từ một file. Nhưng chỉ đọc thôi là chưa đủ, chúng ta cần phải biết cách ghi dữ liệu vào file, và đó là lúc chúng ta cần tới 2 phương thức WriteAllText và WriteAllLines.

Phương thức WriteAllText

Phương thức này cho phép chúng ta viết tất cả dữ liệu từ một biến kiểu string vào trong file. Ví dụ ở đây chúng ta sẽ ghi dữ liệu vào file out.txt:

Ở chương trình trên, vì file out.txt không tồn tại, nên chương tình sẽ tạo mới cho chúng ta file đó và ghi vào đó dòng "Ghi file C# khong kho". Tiếp theo đó, ta sử dụng kiến thức đọc dữ liệu từ file ở phần trước của bài để in ra dữ liệu có trong file. Sau đây là output của chương trình:

Sau khi đọc file và đưa ra kết quả chúng ta có thể thấy việc ghi file diễn ra thành công.

Phương thức WriteAllLines

Tương tự như phương thức WriteAllText WriteAllLines sẽ ghi dữ liệu vào file thông qua một giá trị kiểu string[] (mảng kiểu string), với mỗi một phần tử trong giá trị đó tương ứng với một dòng sẽ được viết vào trong file:

Trên chương trình biến noidung là một biến mảng kiểu string khi sử dụng phương thức WriteAllLines để ghi vào file sẽ cho ra kết quả như sau:

Và như vậy, việc ghi vào file diễn ra thành công.

Phương thức AppendAllText và AppendAllLines

Như chúng ta đã biết ở phần trước của bài để ghi dữ liệu vào một file văn bản thì chúng ta sử dụng 2 phương thức đó là WriteAllText và WriteAllLines nhưng hai phương thức này có một nhược điểm là khi thực hiện ghi dữ liệu vào file thì chương trình sẽ xóa toàn bộ các dữ liệu cũ có trong file và ghi lại vào file một dữ liệu mới, điều này sẽ làm mất đi các dữ liệu ghi trước đó. Vì lẽ đó, AppendAllText và AppendAllLines ra đời.

Hai phương thức này sử dụng y hệt so với WriteAllText và WriteAllLines chỉ có một chút khác biệt là khi thực hiện ghi dữ liệu vào file, 2 phương thức này sẽ thực hiện ghi tiếp dữ liệu vào cuối file mà không phải là ghi hoàn toàn dữ liệu mới. Sử dụng hai phương thức này rất đơn giản như sau:

Lưu ý: <dữ liệu ghi vào> sẽ là một giá trị kiểu string còn <mảng dữ liệu ghi vào> sẽ là một giá trị kiểu string[] (mảng kiểu string).

Tổng kết

Sau đây mình sẽ tổng hợp lại thành một bảng ngăn gọn để các bạn có thể dễ hình dung hơn về các phương thức trên.

Sử dụng Giá trị trả về Chức năng
ReadAllText File.ReadAllText(<tên file>) string Đọc tất cả dữ liệu trong file
ReadAllLines File.ReadAllLines(<tên file>) string[] Đọc từng dòng trong file
WriteAllText File.WriteAllText(<tên file>, <dữ liệu ghi vào>) Không có Xóa tất cả dữ liệu cũ rồi ghi tất cả dữ liệu vào trong file
WriteAllLines File.WriteAllLines(<tên file>, <dữ liệu ghi vào>) Không có Xóa tất cả dữ liệu cũ rồi ghi từng dòng vào trong file với mỗi dòng là mỗi phần tử của dữ liệu
AppendAllText File.AppendAllText(<tên file>, <dữ liệu ghi vào>) Không có Thêm vào cuối file dữ liệu ghi vào
AppendAllLines File.AppendAllLines(<tên file>, <dữ liệu ghi vào>) Không có Thêm từng dòng vào cuối file với mỗi dòng là mỗi phần tử của dữ liệu ghi vào

Như vậy là thông qua bài viết này, các bạn đã có thể nắm bắt được cơ bản các cách để đọc ghi file trong C# như : đọc, ghi, ghi vào cuối file. Cảm ơn bạn đã đọc bài ! Chúc bạn một ngày tốt lành !

Similar Posts

Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments