簡體   English   中英

用於讀取具有頁眉和頁腳的可變長度文件的接口

[英]Interface for reading variable length files with header and footer

我可以為一些體面的界面使用一些提示或技巧來讀取具有特殊特征的文件。

有問題的文件具有標題(〜120字節),正文(1字節-3gb)和頁腳(4字節)。

標頭包含有關主體的信息,而頁腳僅是主體的簡單CRC32值。

我使用Java,所以我的想法是擴展“ InputStream”類並添加一個構造函數,例如“ public MyInStream(InputStream in)”,在該結構中,我立即讀取標頭,並直接覆蓋重寫的read()的主體。

問題是,在讀取完整個正文之前,我無法為該類的用戶提供CRC32值。

由於文件可以是3gb大,因此將其全部存儲在內存中是一個好主意。

如果有許多小文件,則將其全部讀入臨時文件將對性能造成影響。

我不知道文件有多大,因為InputStream不必是文件,它可以是套接字。

再看一遍,也許擴展InputStream是一個壞主意。

感謝您閱讀疲憊的程序員的困惑思想。 :)

再看一遍,也許擴展InputStream是一個壞主意。

如果該類的用戶需要作為流訪問主體,則IMO並不是一個壞選擇。 Java的ObjectOutput/InputStream工作原理如下。

我不知道文件有多大,因為InputStream不必是文件,它可以是套接字。

嗯,那么您的問題不在於Java類的選擇,而在於文件格式的設計。 如果您無法更改格式,那么實際上您無能為力,無法在讀取所有文件結尾之前使文件末尾的數據可用。

但是也許您可以完全封裝校驗和的處理? 大概是主體的校驗和,因此您的類可以始終“預讀” 4個字節以查看文件何時結束,而不會將最后4個字節作為主體的一部分返回給客戶端,而是將它們與讀取時計算出的CRC進行比較身體,如果不匹配則拋出異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM