Tôi đang viết một chương trình C++ để đọc/ghi một tệp lớn (có thể lớn hơn 60GB). Bởi googling vấn đề, có vẻ như là có một giới hạn 2GB trên tập tin io trong hệ thống 32 bit (Tôi đang sử dụng Windows 7 64bit nhưng chương trình của tôi đã được biên soạn với mingw32). Trong chương trình của tôi, tôi viết 10 số nguyên tại một thời điểm vào tệp và tất cả các số này được tạo ngẫu nhiên dựa trên một số thuật toán. Dường như chương trình có thể chạy ngay cả khi kích thước tệp lớn hơn 40GB nhưng không có cách nào để tôi kiểm tra xem dữ liệu được đọc bởi chương trình có thực sự là dữ liệu được lưu trữ trong tệp hoặc một số số rác không. Tuy nhiên, chương trình không báo cáo bất kỳ cảnh báo hoặc lỗi nào. Điều này thực sự có thể đọc/ghi tập tin lớn hơn 60GB trong một chương trình 32-bit?có giới hạn 2G đối với việc đọc/ghi tệp bằng C++ fstream không?
Trả lời
Có giới hạn về kích thước tệp (tối đa 4GB, tôi nghĩ) trên hệ thống tệp Fat32. Windows 7 chắc chắn không nên sử dụng hệ thống tập tin đó theo mặc định.
Cũng trên hệ thống 32 bit có giới hạn về kích thước tệp bạn có thể ánh xạ vào bộ nhớ cùng một lúc bằng cách sử dụng CreateFileMapping/MapViewOfFile. Tuy nhiên, fstream không sử dụng CreateFileMapping/MapViewOfFile trong nội bộ, do đó không có giới hạn cho kích thước tệp (ngoài giới hạn hệ thống tệp). Và ngay cả với CreateFileMapping, bạn có thể ánh xạ phần của tập tin lớn hơn vào bộ nhớ, do đó không có giới hạn nào ngoài việc áp đặt bởi hệ thống tập tin.
oh, nếu fstream không thực sự có giới hạn về kích thước tập tin hơn nó sẽ là một tin tuyệt vời cho tôi vì tôi không có ý tưởng làm thế nào để phá vỡ tập tin của tôi thành từng mảnh để tránh giới hạn 4GB. Cảm ơn – user1285419
"Windows 7 chắc chắn không nên sử dụng hệ thống tập tin đó theo mặc định." - Tuyên bố đó quá rộng. Tuy nhiên, vì câu hỏi liên quan đến một tập tin 40GB hoặc 60GB, nó có lẽ không phải trên bộ nhớ flash USB. –
@Windowsprogrammer: exFAT – SigTerm
- 1. Có giới hạn nào đối với setTimeout không?
- 2. MySQL Có giới hạn nào đối với InnerJoin không?
- 3. Có giới hạn thời gian đối với công việc Cron trong Google Apps không?
- 4. Có bất kỳ giới hạn kích thước nào đối với cấu trúc C không?
- 5. Giới hạn 2GB đối với kích thước tệp khi sử dụng fwrite trong C?
- 6. Không thể đặt giới hạn với coord_trans
- 7. Đối tượng Ruby có giới hạn kích thước không?
- 8. vb6 mảng với -1 đối với giới hạn trên
- 9. Chức năng trong C với các đối số không giới hạn?
- 10. Nhật ký không giới hạn với logrotate
- 11. Có giới hạn nào về kích thước tệp khi tải xuống bằng PHP không?
- 12. C# generics - không có giới hạn dưới bởi thiết kế?
- 13. giới hạn việc tạo đối tượng trên đống và ngăn xếp trong C++
- 14. C# chuyển đổi: Trường hợp không thuộc thông qua đối với trường hợp khác giới hạn
- 15. lỗi fstream trong C++
- 16. Có giới hạn về kích thước đối với định dạng .NET Assembly không?
- 17. php có bị giới hạn không?
- 18. tôi có cần đóng std :: fstream không?
- 19. Vector subscript ra lỗi vượt giới hạn, C++
- 20. Giới hạn tải lên tệp trong HTTP
- 21. Có phải 5MB giới hạn trên thực tế đối với W3C Web Storage không?
- 22. Do enums có giới hạn thành viên trong C#?
- 23. Giới hạn (amp) có hạn chế hơn mã hạt nhân CUDA không?
- 24. C++ - mảng Thông tư có giới hạn dưới/trên?
- 25. typedef một mảng phao không bị giới hạn trong C
- 26. Giới hạn việc tải tệp lên một số tiện ích mở rộng tệp
- 27. PHP str_replace() với tham số giới hạn?
- 28. C# string split - index ngoài giới hạn
- 29. cách vượt qua đối số không giới hạn bằng cách tham chiếu trong php
- 30. C++ fstream - tạo cờ định dạng riêng
Bản sao có thể có của http://stackoverflow.com/questions/301995/write-large-file –
Tôi nghĩ liên kết được đưa ra bởi Carey Gregory trả lời câu hỏi giới hạn tệp 2GByte. Tại sao không có cách nào để bạn kiểm tra xem các con số có được viết chính xác không? Thay vì viết số ngẫu nhiên, bạn có thể kiểm tra bằng cách viết chuỗi số 0 đến 2.147.483.647 (tất cả các số nguyên 32 bit dương), sẽ là tệp 8GB, sau đó đọc lại. – gbulmer