2015-06-08 12 views
5

Như tiêu đề nói; Tôi có thể dựa vào MemoryMappedFile để luôn tạo một tệp đầy đủ các số không? Tôi đã thử nghiệm bằng cách đọc một số tập tin mới được tạo ra nhưng điều này "thử nghiệm" có vẻ vô ích, độ cao tôi chưa thấy một byte khác không.MemoryMappedFile.CreateNew (...) có được đảm bảo tạo một tệp với số không?

Có bất kỳ tài liệu nào về điều này mà tôi đã bỏ sót hay chỉ đơn giản là một tập tin được ánh xạ bộ nhớ trống khi tạo.

Trả lời

1

Không, điều này không được đảm bảo. Điều này dường như được thực hiện cụ thể.

Trong khi không được đề cập trong MemoryMappedFile, hành vi của API gốc cơ sở mà nó sử dụng trong .NET thích hợp (CreateFileMapping) làm rõ tài liệu này và khác tùy thuộc vào nguồn lưu trữ.

Trong trường hợp của một ánh xạ tập tin sao lưu:

Nếu tập tin được mở rộng, nội dung của các tập tin giữa kết thúc cũ của tập tin và kết thúc mới của tập tin không đảm bảo bằng không; hành vi được xác định bởi hệ thống tệp.

Và trong trường hợp của một bản đồ vô danh (được hỗ trợ bởi tập tin trang):

Nội dung ban đầu của các trang trong một đối tượng lập bản đồ tập tin được hỗ trợ bởi tập tin hệ điều hành phân trang là 0 (zero).

+0

Bạn có liên kết nguồn hay không, tôi muốn xem xét kỹ hơn chi tiết cụ thể. – LaFleur

+1

Microsoft không thể đưa ra bất kỳ lời hứa nào về hệ thống tệp, nó không nằm trong tầm kiểm soát của họ. Tuy nhiên, không có bất kỳ sử dụng phổ biến nào không tạo ra số không. –

+0

@LaFleur http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537.aspx –

Các vấn đề liên quan