4

Kryo の gzip ファイルから不明な数のオブジェクトを読み込んでいます:

Input input = new Input(new GZIPInputStream(Files.newInputStream(inputFile)));

問題は、ファイルから最後のオブジェクトを読み取ったことをどのように検出するかということです。オブジェクトを書き込んでいるときには、何を書き出すかが事前にわからないため、ファイルの先頭にオブジェクトの数を含めることはできません。

ファイルの最後に、それが最後のオブジェクトであることを示すために書き込むある種の「ダミー」オブジェクトを含めることもできますが、それは醜いようです。

4

3 に答える 3

1

最新 (3.0.3) の kryo ライブラリでは、input.eof() を使用できます。古いものについては、input.available() を使用してパフォーマンスを犠牲にします (ほぼ 8 倍遅くなります)。

while(input.available() > 0){
  someObject = kryo.readObject(input, SomeClass.class);
  i++;
}
于 2015-10-16T06:22:03.037 に答える