Stiamo pensando di utilizzare buffer protocollo per la registrazione binaria perché:Uso buffer di protocollo per la registrazione binaria
- E 'come stiamo codifica i nostri oggetti comunque
- è relativamente compatto, veloce in lettura/scrittura ecc
detto questo, non è ovvio come dovremmo andare su di esso, perché le API tendono a concentrarsi sulla creazione di oggetti interi, in modo da avvolgere un elenco di DataLogEntry come un campo ripetuto in un DataLogFile sarebbe quello che si fare in termini di messaggistica, ma quello che vogliamo veramente è solo quello di essere in grado di wr ite e poi leggere un'intera DataLogEntry, aggiungendola alla fine di un file.
Il primo problema che abbiamo colpito così facendo è che facendo questo (in un test:..
FileInputStream fileIn = new FileInputStream(logFile);
CodedInputStream in = CodedInputStream.newInstance(fileIn);
while(!in.isAtEnd()) {
DataLogEntry entry = DataLogEntry.parseFrom(in);
// ... do stuff
}
Solo risultati in 1 DataLogEntry vengono letti dal flusso Senza l'isAtEnd, non si ferma mai
Pensieri
Edit:? ho passato a utilizzare entry.writeDelimitedTo e BidLogEntry.parseDelimitedFrom e che sembra funzionare ...
Quindi, cosa hai finito? Qualche commento 2 anni dopo? – bstempi