Có thể bắt đầu xử lý tệp trước khi tải xuống hoàn toàn không?
Vâng
Các vấn đề tiềm năng với điều này là gì?
Khi đạt EOF - làm thế nào để xác định xem đó có thực sự là EOF hay không, nếu đầu đọc chỉ nhanh hơn đầu thu và chỉ cần đợi một giây trước khi thử lại đọc?
Giải pháp cho vấn đề này sẽ là:
sử dụng thời gian chờ - nếu kích thước tệp không thay đổi nữa trong vài phút, việc chuyển có thể được coi là hoàn tất. Tôi không thích giải pháp này vì người ta không bao giờ biết, nếu việc chuyển tiền bị chấm dứt hay nếu kết nối bị mất.
hãy thử lấy kích thước tệp trước - nếu sử dụng máy chủ ftp, người ta thường có thể thực hiện lệnh 'dir' để lấy kích thước tệp trước khi tải xuống. Giá trị này có thể được chuyển cho chương trình đọc
tạo tập lệnh tải xuống để tạo tệp 'hoàn tất chuyển' mà chương trình đọc có thể kiểm tra khi gặp EOF.
Lưu ý: Tôi không thực sự lo lắng về việc chương trình đến cuối tệp trước khi tải xuống xong - tệp đang được tải xuống nhanh hơn chương trình có thể xử lý dữ liệu.
Bạn nên - thực sự! Điều gì xảy ra nếu kết nối mạng chậm hơn bình thường chỉ vì một số chuyển khoản khác đang diễn ra? Nó sẽ ổn để mất dữ liệu trong trường hợp này?
unzip
không phải vì nén mà vì cách cấu trúc các tệp Zip: với tất cả siêu dữ liệu tệp ở cuối. Các chương trình nén luồng, chẳng hạn nhưgzip
hoặcxz
, không hoạt động theo cách này và có thể xử lý các tệp được viết chủ động.