Precedente :: Successivo |
Autore |
Messaggio |
saetta Eroe in grazia degli dei

Registrato: 25/02/08 11:52 Messaggi: 129
|
Inviato: 13 Gen 2009 11:41 Oggetto: [C] files binari |
|
|
Salve!
Sono alle prese con la manipolazione di files binari...
Devo salvare tutti i bit di vari files in un unico file.dat ... mi chiedevo come sapere, all'atto del prelievo di un unico file, dove fermarmi nella lettura.
Pensavo di organizzare i file da salvare in struct
{
nome_file
num_blocks
}
in modo da sapere, per ciascun file, quanti blocchi (penso di farli di dim 1024 bytes) leggere.
nel file binario leggero' dunque m bytes per il nome del file (riconoscendo se è quello richiesto dalla op di lettura o no), e il numero di blocchi corrispondente a tale file. Usando fread(...) con il giusto num di blocchi appena letto otterrò il file per intero?
Oppure esiste un altro modo per "separare" i vari files rappresentati all'interno dello stesso file binario?
Ho pensato anche di fissare la dimensione max di ciascun file, omogenea per tutti ma cosi' sprecherei spazio per i file più piccoli e non permetterei la memorizzazione di file piu' grandi del limite dato.
 |
|
Top |
|
 |
saetta Eroe in grazia degli dei

Registrato: 25/02/08 11:52 Messaggi: 129
|
Inviato: 22 Gen 2009 18:29 Oggetto: |
|
|
Vorrei un consiglio da chi ne sa piu' di me...
Circa file binario di cui parlo nel precedente post... mi trovo a dover aggiungere blocchi di bytes(ho deciso di buttargli dentro direttamente le struct con fwrite),prelevarli(fread),modificarli(fwrite) e cancellarli(memset...o scrittura distruttiva...vedrò!).
Dato che a priori non so quante operazioni di aggiunta, modifica, cancellazione, lettura l'utente farà... mi chiedevo se
1)sia meglio copiarmi il contenuto del file in un vettore di struct (contenente quelle memorizzate nel file) all'atto dell'apertura del file .dat
oppure se
2)operare direttamente sul file.
Devo tenere in memoria i dati il tempo strettamente necessario quindi pensavo alla soluzione 2 ma è sensato fare così tante operazioni dirette sul file?
Oppure è meglio modificare la mia struttura dati e immediatamente prima della chiusura del file salvare il tutto sul file dat?
Oppure ancora, una cosa intermedia, tipo tenere in memoria solo la struttura che contiene i dati su cui sto effettivamente lavorando? |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 23 Gen 2009 19:18 Oggetto: |
|
|
Sono di quelle domande per le quali non c'è UNA risposta. O meglio, la risposta è: dipende.
Se parliamo di piccole strutture (qualche kb?) e in numero esiguo, allora evidentemente leggere il file per intero, caricare tutto in memoria, eseguire tutte le operazioni ed infine salvare il tutto da capo in un file è la via più comoda. Ad esempio il notepad opera così.
Se hai strutture grandi/complesse in grande numero (o prevedi che lo possano diventare) allora evidentemente devi usare l'altro sistema: apri il file, trovi e leggi solo quello che ti serve e chiudi. Quando salvi, apri il file, trovi dove salvare, salvi e chiudi. Ad esempio Outlook fa così con i PST (e meno male, io ne ho alcuni più grandi di 4GB...)
 |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 26 Gen 2009 15:02 Oggetto: |
|
|
off-topic
SverX ha scritto: | Ad esempio Outlook fa così con i PST (e meno male, io ne ho alcuni più grandi di 4GB...) | Uhm, non so se anche con Outlook (che usa un formato di file diversi), ma con Outlook Express sopra una certa dimensione rischi, conviene suddiidere i messaggiin più cartelle del client (quindi più file sul disco).
Non ricordo ora quale fosse la discussione, ma è una di quelle elencate qui. |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 26 Gen 2009 15:15 Oggetto: |
|
|
chemicalbit ha scritto: | off-topic
SverX ha scritto: | Ad esempio Outlook fa così con i PST (e meno male, io ne ho alcuni più grandi di 4GB...) | Uhm, non so se anche con Outlook (che usa un formato di file diversi), ma con Outlook Express sopra una certa dimensione rischi, conviene suddiidere i messaggiin più cartelle del client (quindi più file sul disco). |
E' diverso e comunque parlo delle mail archiviate (quelle vecchie)
Certo, potrei fare un nuovo archivio... beh, magari alla fine dell'anno  |
|
Top |
|
 |
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|