Sto sviluppando un progetto in cui devo caricare file molto grandi (fino a 50 MB). Attualmente sto caricando questi file completamente nella memoria (consecutiva). Questo ha il vantaggio di poter cambiare molto facilmente i byte in determinate posizioni, perché non conosco la struttura di tutti i byte.
Tuttavia, la mia intenzione è anche di cambiare la struttura, ad es. rimuovendo / aggiungendo 'pezzi'. Ora ho l'idea di rimuovere le parti "conosciute" da esso, memorizzarle in classi con un blocco dati contenente solo quelle parti e creare una sorta di elenco di riferimento per quei blocchi.
per esempio:.
File originale:
- Intestazione
- ChunkA 1
- ChunkA 2
- Intermedio
- ChunkB 1
- Piè di pagina
Il risultato sarà:
Istanza ChunkA 1 e ChunkA 2. ChunkB 1 istanza
Istanza "File" e un riferimento con offset di base + riferimento a tutti i blocchi.
Alla fine devo "ricreare" o scrivere il file originale (con modifiche).
Questa è in generale una buona idea o c'è qualche schema di progettazione che mi aiuti in questo?