Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[C] files binari
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
saetta
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 25/02/08 11:52
Messaggi: 129

MessaggioInviato: 13 Gen 2009 11:41    Oggetto: [C] files binari Rispondi citando

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.

Rolling Eyes
Top
Profilo Invia messaggio privato
saetta
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 25/02/08 11:52
Messaggi: 129

MessaggioInviato: 22 Gen 2009 18:29    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 23 Gen 2009 19:18    Oggetto: Rispondi citando

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...)

Ciao
Top
Profilo Invia messaggio privato HomePage
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 18:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 26 Gen 2009 15:02    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 26 Gen 2009 15:15    Oggetto: Rispondi

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 Wink
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
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