Vorrei creare un'API della riga di comando in un'applicazione Java per esportare un blob binario su stdout. Vorrei inoltre esportare determinati attributi sul blob, idealmente in un formato non binario. L'obiettivo è di produrre questi dati in modo conveniente ed efficiente per scrivere e leggere. Sono abbastanza impostato sull'utilizzo di stdout perché mi consente di inserire facilmente i dati in un altro processo senza creare file intermedi, il che è molto utile.
Potrei scrivere gli attributi del testo su una linea separata da tabulazioni e seguirli con il blob binario. Ma dal momento che lo stdout non è strutturato, sarebbe strano analizzare se il testo e i dati binari sono mescolati. Ad esempio, lo stream dovrebbe probabilmente essere letto in modalità binaria finché non viene trovato un byte che eguaglia un carattere di nuova riga ASCII e quindi i dati dovrebbero essere suddivisi in quel punto.
In alternativa, potrei avvolgere tutti i dati in un formato strutturato. I formati con cui ho più familiarità, come JSON e XML, sono formati di testo e quindi i dati binari dovrebbero essere codificati, il che aumenterebbe notevolmente il tempo di calcolo e la dimensione dei dati. Ma ci possono essere formati progettati per questo scopo.
In terzo luogo, potrei implementare un formato binario simile ai formati di file comuni con un'intestazione contenente campi che hanno una lunghezza di byte fissa o sono preceduti da lunghezze di byte. Tuttavia, sono preoccupato che tale formato sarebbe inutilmente non standardizzato e fastidioso da scrivere e analizzare. In particolare, non vedo il vantaggio di un tale formato rispetto alla prima opzione in cui una nuova riga separa attributi e dati.
Potrebbero esserci anche altre opzioni, ma non sto pensando ad altre buone. Gradirei molto i suggerimenti degli altri su questo argomento.