Newsgroup: it.comp.programmare.win32
Titolo: Aggiungere in cima ad un file...

Salve.
Scusate se la domanda non è proprio pertinente alla programmazione Win32
specifica, ma forse è meglio postarla nel ng dell'implementazione adatta
in cui poi dovrà essere implementata la soluzione.
Niente... dovrei creare una banalissima applicazione che non fa altro
che inserire un certo testo _in cima_ ad un file. Questo file,
ovviamente, dopo un certo tempo diverrà molto grande. Il problema quindi
è: come posso inserire in cima ad un file molto grande, nel modo più
efficiente possibile?
Creare un file ex novo, aggiungere le nuove info e poi le info contenute
nel file vecchio, credo sia una procedura troppo lunga: non c'è un modo
per evitare di dover comunque leggere l'intero "file vecchio"?
Ovviamente, non mi va di scendere a lavorare con gli inode (non so se
Windows funzioni con gli inode come Linux) per un'applicazione così
banale: tanto vale poi appoggiarsi ad un db.
Preferibilmente, il tutto dovrebbe esser fatto in C#.
Saluti.
Francesco


Perchè non virtualizzi l'accesso a quel file con un tuo wrapper in modo che 
sembri di accedere ad un unico file, mentre tu invece gestisci il file a 
'pezzetti' che progressivamente aggiunti in testa?
Se poi lavori dal framework questo è ancora più semplice visto che puoi 
semplicemente derivare FileStream e gestire gli 'enne' files come se fosse 
uno unico.
-- 
Raffaele Rialdi
Microsoft .NET MVP 
http://mvp.support.microsoft.com
 -
http://italy.mvps.org
 UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org
 Weblog: 
http://blogs.ugidotnet.org/raffaele

 a 'pezzetti' che progressivamente aggiunti in testa?
Ma così dovrei tenere il programma sempre attivo. No?
In realtà il programma può anche essere eseguito giusto uno o due volte
al giorno. Oppure può esser richiamato decine di volte. Dipende dai
giorni. Per questo avevo pensato di far richiamare l'applicazione dal
menù del tasto destro associato a certi tipi di file e prendere il nome
del file (cioè delle info) da aggiungere in testa al file di base,
tramite gli argomenti passati all'applicazione.
Insomma, l'utente clicka col dx su un file e sceglie la mia
applicazione: questa non fa altro che aggiungere in cima ad un certo
file queste nuove info.
Per ora ho risolto copiando il file su cui l'utente clicka col dx,
scrivendo il file di base in coda a questa copia, e sostituendo il file
di base. Risparmio di leggere il file nuovo, però sempre leggo l'intero
file vecchio. :-(
Inoltre, non sempre le info provengono da un file. :(
Va be', forse tento di cambiare specifiche: non un file sequenziale, ma
un'altra struttura.
Grazie,
Francesco

 Inoltre, non sempre le info provengono da un file. :(
beh, questo non mi sembra importante ... tu alla fine vuoi scrivere un file, 
ma da dove vengano i dati poco importa.
Prova a pensarla in modo OOP. Il formato del file non deve essere 
necessariamente conosciuto.
Quindi scrivi un modello ad oggetti che gestisca il tuo file. Questo strato 
di software avrà il compito di fare in primis due cose:
- smazzarsi il formato a basso livello, comunque tu lo concepisca
- evitare a chiunque di dover studiare le specifiche del tuo formato
Per fare un parallelo hai l'object model di Word dove la conoscenza del 
formato è evitabile se usi il suo object model.
