30/09/2018, 16:24

Tại sao phải close file sau khi read/write?

Đây là một vấn đề chung mà nhiều bạn mới học lập trình hay quên, đó là phải close file sau khi đã thao tác xong trên file đó. Nhưng lý do tại sao ta phải close file sau khi thao tác xong?

* Ghi chú là có một số ngôn ngữ tự động close file, nhưng ta đang bàn đến các ngôn ngữ không tự close file.

Phạm Hoàng Tuấn viết 18:32 ngày 30/09/2018

Theo e biết, khi ta bắt đầu mở 1 file để đọc hoặc ghi, thì hệ điều hành sẽ khóa file đó lại (tùy hệ điều hành có thể là set trạng thái của file đó là invaliable ), không cho các chương trình, tiến trình khác có thể xử lý trên file đó nữa, nhằm đảm bảo tính nhất quán của dữ liệu, có thể hiểu nôm na là tại 1 thời điểm chỉ có duy nhất 1 tác vụ được xử lý trê file đó. Khi close file, tức là ta thông báo cho hệ điều hành biết là ta đã xài xong, người khác có thể vào xài.

*grab popcorn* viết 18:30 ngày 30/09/2018

1 topic hay!
Sau đây là 1 số ý kiến của mình

1/ Trước hết là giới hạn của hệ điều hành. Chẳng hạn 1 hệ điều hành chỉ cho mở 1 số file nhất định cùng lúc thì nếu quên đóng file đi -> File cứ mở mãi -> Gây hao tốn! Hoặc có thể gây tốn bộ nhớ khi mở các file bự khổng lồ mà quên đóng đi @_@
2/ Đặc biệt là các file dùng để ghi, thì hệ điều hành ko ghi trực tiếp ra file. Mà ghi qua bộ đệm (buffer) sau đó mới ghi ra file. Tương tự các file đọc, thì nó cũng đc lưu vào buffer sau rồi mới lụm ra cho mình xài. Ko đóng đi thì buffer ko được free -> tạch :v
3/ Như mod tuancoi nói Ko đóng file thì 1 số chương trình khác bị chặn ko cho chỉnh sửa hoặc có thể không đọc được file.
THam khảo từ: http://www.cs.bu.edu/teaching/c/file-io/intro/

Nguyễn Minh Dũng viết 18:27 ngày 30/09/2018

@drgnz trả lời chuẩn rồi. Thông thường các bạn mới học lập trình hay được dặn là phải close file sau khi thao tác xong, nhưng ít bạn lại đặt câu hỏi tại sao phải close file

Bổ sung thêm một điểm nữa. Việc close file sau khi thao tác xong là một thói quen tốt, nó sẽ đảm bảo cho việc viết code của mình hợp lý hơn. Khi bạn khởi tạo cái gì đó, thì nhớ hủy nó đi. Một số ngôn ngữ hiện đại sẽ giúp bạn làm việc hủy tài nguyên, nhưng không có gì đảm bảo là ngôn ngữ sẽ làm tốt công việc này.

Bài liên quan
0