Vì bạn đang nói về "lưu tệp", nên tệp sẽ không được chỉnh sửa tại chỗ trên đĩa.
Với một tệp trong một hệ thống tệp thông thường, có hai điều cần xem xét. Có mục nhập thư mục, và sau đó là dữ liệu tệp thực tế ở đâu đó trên đĩa.
Khi bạn chỉnh sửa tệp trong trình chỉnh sửa bình thường, nó sẽ tải dữ liệu tệp vào RAM và mọi chỉnh sửa sẽ chỉ xảy ra trên bản sao dữ liệu đó. Sau đó, khi bạn lưu tệp, về cơ bản có hai tùy chọn:
Tùy chọn 1: tệp gốc được đổi tên , vì vậy cả mục nhập thư mục gốc và dữ liệu gốc sẽ vẫn còn trên đĩa. Ví dụ, việc đổi tên có thể thay đổi hậu tố tệp thành .bak
(thường loại bỏ bất kỳ .bak
tệp nào trước đó ). Sau đó, một tệp mới được tạo và dữ liệu từ bộ nhớ được ghi ở đó.
Tùy chọn 2: mục nhập thư mục gốc được sửa đổi để tập tin bị cắt ngắn thành 0. Vùng trên đĩa được sử dụng cho dữ liệu tệp sẽ được đánh dấu là không sử dụng, nhưng nội dung tệp cũ sẽ vẫn còn trên đĩa cho đến khi chúng bị ghi đè. Sau đó, dữ liệu mới được viết. Trong trường hợp này, mục nhập thư mục vẫn còn, chỉ dữ liệu mà nó trỏ đến được thay đổi.
Có một vài biến thể có thể xảy ra, một biến thể phổ biến, dữ liệu đã chỉnh sửa trước tiên được lưu trữ vào tệp tạm thời, vì vậy nếu máy tính của bạn gặp sự cố tại thời điểm này, tệp gốc có thể sẽ không bị hỏng. Sau đó, tệp gốc sẽ bị xóa và tệp mới được đổi tên với tên chính xác. Hoặc, tệp gốc chỉ có thể bị xóa trước khi viết tệp mới.
Vì vậy, lý thuyết 1 của bạn gần với những gì hầu hết các biên tập viên làm.
Sau đó là những trường hợp đặc biệt. Rõ ràng nhất là trình soạn thảo đĩa, cho phép đọc và ghi đè byte trực tiếp trên đĩa. Một cái khác có thể là một tệp cơ sở dữ liệu, trong đó các bản ghi có thể có kích thước cố định, vì vậy thật dễ dàng để ghi đè lên một bản ghi. Nhưng dữ liệu không thể được thêm vào giữa tệp và do đó chỉnh sửa tệp văn bản hoặc bất kỳ tệp nào khác trong đó độ dài của dữ liệu ở giữa tệp thường thay đổi, những thủ thuật này thực sự không thể được sử dụng.
Vì vậy, lý thuyết 2 của bạn có thể trong một số trường hợp, nhưng các trình soạn thảo văn bản thông thường và không nên làm như vậy.