我可以使用一些提示或技巧来创建一个像样的界面来读取具有特殊特征的文件。
有问题的文件有标题(~120字节)、正文(1字节-3 3gb)和页脚(4字节)。
头部包含关于主体的信息,而脚注只是主体的一个简单的CRC32值。
我使用Java语言,所以我的想法是扩展" InputStream“类,并添加一个构造函数,如"public MyInStream( InputStream in)”,其中我立即读取头文件,并直接将被覆盖的read ()的主体。
问题是,在读取完整个正文之前,我不能给类的用户提供CRC32值。
因为文件可以有3 3gb大小,所以把它全部放在内存中是个不错的主意。
如果有许多小文件,那么将所有内容读取到临时文件中将会影响性能。
我不知道这个文件有多大,因为InputStream不一定是一个文件,它可以是一个套接字。
再看一遍,也许扩展InputStream不是一个好主意。
感谢您阅读了一个疲惫的程序员的困惑的想法。:)
发布于 2010-04-01 00:49:03
再看一遍,也许扩展InputStream不是一个好主意。
如果类的用户需要以流的形式访问正文,这不是一个糟糕的选择。Java的ObjectOutput/InputStream是这样工作的。
我不知道这个文件有多大,因为InputStream不一定是一个文件,它可以是一个套接字。
嗯,那么你的问题不是Java类的选择,而是文件格式的设计。如果您不能更改格式,那么在读取所有文件之前,您实际上无法执行任何操作来使文件末尾的数据可用。
但也许您可以完全封装校验和的处理?假设它是正文的校验和,所以您的类总是可以“提前读取”4个字节来查看文件何时结束,而不是将最后4个字节作为正文的一部分返回给客户端,而是将它们与读取正文时计算的CRC进行比较,当不匹配时抛出异常。
https://stackoverflow.com/questions/2554749
复制相似问题