Đọc ghi file trong C#

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

Vì sao tất cả chúng ta đọc ghi file

  • Các dữ liệu sẽ được lưu ở biến của chương trình, & nó sẽ mất hút ngay sau thời điểm chương trình chấm dứt. Sử dụng file để lưu trữ dữ liệu thiết yếu, để bảo đảm dữ liệu của các bạn 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à chẳng thể nhập bằng tay, & chương trình của các bạn có thể đọc file mỗi lần khi chạy.
  • Đơn giản copy di chuyển qua lại giữa các thiết bị với nhau.

Các kiểu file

Trong hạn chế nội dung này tất cả chúng ta sẽ chỉ khám phá 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ể đơn giản đượ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 từ 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ẽ auto 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# suport. Qua đó việc thao tác đọc ghi file trong C# là một điều cực kì đơn giản.

Để 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:

1

using

System

.

IO

;

Thao tác đọc file trong C#

Để đọc được dữ liệu từ một file bằng C#. Tất cả chúng ta sử dụng các bí quyết như ReadAllTextReadAllLines sẽ được trình bày ngay sau đây.

Bước này, mình đã chuẩn bị 1 file là check.txt có bài viết như sau:

1

2

3

Day la dong thu 1 trong file check.txt

Day la dong thu 2 trong file check.txt

Day la dong thu 3 trong file check.txt

Cách thức ReadAllText

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

using

System

;

using

System

.

IO

;

using

System

.

Text

;

 

namespace

luyencodec_

{

    

class

Program

    

{

        

static

void

Main

(

string

[

]

args

)

        

{

            

Console

.

WriteLine

(

“Noi dung trong file: “

)

;

            

string

a

=

File

.

ReadAllText

(

“test.txt”

)

;

            

Console

.

WriteLine

(

a

)

;

 

            

Console

.

ReadKey

(

)

;

// stop screen

        

}

    

}

}

Sau khoảng thời gian chạy chương trình trên màn hình sẽ xuất hiện kết quả:

1

2

3

4

Noi dung trong file:

Day la dong thu 1 trong file check.txt

Day la dong thu 2 trong file check.txt

Day la dong thu 3 trong file check.txt

Như các bạn có thể thấy, bí quyết ReadAllText sẽ đọc toàn bộ các dòng trong file check.txt& in ra cùng một lúc. Nhưng giờ tất cả chúng ta mong muốn đọc từng dòng trong file đó để hiểu rằng dòng đó có chưa những dữ liệu thì gì phải làm sao ? Chính vì như vậy, tất cả chúng ta phải dùng đến bí quyết ReadAllLines sẽ được trình bày ở phần sau của nội dung.

Cách thức ReadAllLines

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

using

System

;

using

System

.

IO

;

using

System

.

Text

;

 

namespace

luyencodec_

{

    

class

Program

    

{

        

static

void

Main

(

string

[

]

args

)

        

{

            

Console

.

WriteLine

(

“Noi dung trong file: “

)

;

            

string

[

]

a

=

File

.

ReadAllLines

(

“test.txt”

)

;

            

for

(

int

i

=

;

i

<

a

.

Length

;

++

i

)

            

{

                

Console

.

Write

(

i

+

“. “

)

;

                

Console

.

WriteLine

(

a

[

i

]

)

;

            

}

 

            

Console

.

ReadKey

(

)

;

// stop screen

        

}

    

}

}

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

1

2

3

4

5

 

Noi dung trong file:

0. Day la dong thu 1 trong file check.txt

1. Day la dong thu 2 trong file check.txt

2. Day la dong thu 3 trong file check.txt

 

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

Thao tác ghi file trong C#

Như thế, tất cả chúng ta đã khám phá xong phương pháp để đọc dữ liệu từ một file. Nhưng chỉ đọc thôi là chưa đủ, tất cả chúng ta cần phải biết cách ghi dữ liệu vào file, & này là lúc tất cả chúng ta cần tới 2 bí quyết WriteAllTextWriteAllLines.

Cách thức WriteAllText

Cách thức này cho phép tất cả chúng ta viết toàn bộ dữ liệu từ một biến kiểu string vào trong file. Chẳng hạn bước này tất cả chúng ta sẽ ghi dữ liệu vào file out.txt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

using

System

;

using

System

.

IO

;

using

System

.

Text

;

 

namespace

luyencodec_

{

    

class

Program

    

{

        

static

void

Main

(

string

[

]

args

)

        

{

            

string

noidung

=

“Ghi file C# khong kho”

;

            

File

.

WriteAllText

(

“out.txt”

,

noidung

)

;

 

            

string

a

=

File

.

ReadAllText

(

“out.txt”

)

;

            

Console

.

WriteLine

(

a

)

;

 

            

Console

.

ReadKey

(

)

;

// stop screen

        

}

    

}

}

Ở 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 tất cả chúng ta file đó & ghi vào đó dòng "Ghi file C# khong kho". Kế đến đó, ta sử dụng học 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:

1

Ghi file C# khong kho

Sau khoảng thời gian đọc file & đề ra kết quả tất cả chúng ta có thể thấy việc ghi file diễn ra thành công.

Cách thức WriteAllLines

Cũng giống như bí quyết 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:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

using

System

;

using

System

.

IO

;

using

System

.

Text

;

 

namespace

luyencodec_

{

    

class

Program

    

{

        

static

void

Main

(

string

[

]

args

)

        

{

            

string

[

]

noidung

=

{

“Ghi file C# khong kho”

,

“Ghi tung dong vao file cung de khong kem”

}

;

            

File

.

WriteAllLines

(

“out.txt”

,

noidung

)

;

 

            

string

a

=

File

.

ReadAllText

(

“out.txt”

)

;

            

Console

.

WriteLine

(

a

)

;

 

            

Console

.

ReadKey

(

)

;

// stop screen

        

}

    

}

}

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

1

2

Ghi file C# khong kho

Ghi tung dong vao file cung de khong kem

& như thế, việc ghi vào file diễn ra thành công.

Cách thức AppendAllText & AppendAllLines

Như tất cả 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ì tất cả chúng ta sử dụng 2 bí quyết này là WriteAllTextWriteAllLines nhưng hai bí quyết này có một điểm yếu là khi thực hiện ghi dữ liệu vào file thì chương trình sẽ xóa toàn thể các dữ liệu cũ có trong file & 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 đây. Vì lẽ đó, AppendAllTextAppendAllLines chào đời.

Hai bí quyết này sử dụng y hệt đối với WriteAllTextWriteAllLines chỉ có một tí độc đáo là khi thực hiện ghi dữ liệu vào file, 2 bí quyết 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 bí quyết này không quá khó như sau:

1

File.AppendAllText(<tên file>, <dữ liệu ghi vàovàgt;);

&

1

File.AppendAllLines(<tên file>, <mảng dữ liệu ghi vàovàgt;);

Cảnh báo: <dữ liệu ghi vàovàgt; sẽ là một giá trị kiểu string còn <mảng dữ liệu ghi vàovàgt; sẽ là một giá trị kiểu string[] (mảng kiểu string).

Kết luận

Sau đây mình sẽ thống kê 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 bí quyết trên.

Sử dụng
Giá trị trả về
Tính năng

ReadAllText
File.ReadAllText(<tên file>)
string
Đọc toàn bộ 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àovàgt;)
Không có
Xóa toàn bộ dữ liệu cũ rồi ghi toàn bộ dữ liệu vào trong file

WriteAllLines
File.WriteAllLines(<tên file>, <dữ liệu ghi vàovàgt;)
Không có
Xóa toàn bộ 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àovàgt;)
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àovàgt;)
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ư thế là thông qua nội dung này, các bạn đã sở hữu thể chớp được được căn bản các phương pháp để đọ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 !

Xem Thêm  source

Viết một bình luận