Newsgroup: it.comp.java
Titolo: Consiglio su metodologia

scarico dei file zip tramite url, (ZipInputStream)
li metto  nel Buffer (BufferedReader)
poi li leggo una riga alla volta...
Ora vorrei tenere in memoria i file scaricati per riutilizzarli...
Tenendo  conto dei miei limiti (java 1.1) e del fatto che non so quanti ne
verranno  scaricati cosa mi consigliate di fare?... Immagino di dover usare
un vector... ma come?... Cosa mi conviene memorizzare?
Grazie
Oxy

 un vector... ma come?... Cosa mi conviene memorizzare?
Passa attraverso uno StringWriter (o un ByteArrayOutputStream)
ZipInputStream zis = ...
InputStream is = new BufferedInputStream(zis);
int c;
StringWriter sw = new StringWriter();
while ((c=is.read())!=-1) sw.write(c);
is.close();
String contenuto = sw.toString(); // Per stampare il contenuto
Reader reader = new StringReader(sw.toString()); // Per rileggere il 
contenuto
Voila'.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 Voila'.
Ti ringrazio molto per l'esempio che mi copio subito nell'apposita
cartella...
ma nel frattempo avevo preso una strada diversa che *forse* si adatta di
piu' ai miei scopi:
Considerando che poi le righe vengono trasformate in testo ed in numeri...
ho memorizzato i dati gia' trasfomati in array di numeri e stringhe, cosa
che veniva fatta  in ogni caso, in un Vector... (come si chiama?...
bidimensionale? ).. insomma qui:  Vector  dati[] = new Vector[7];
In questo modo con poche righe in piu' ho gia' pronti i dati senza doverli
ritrasformare ogni volta...  a parte che la trasfomazione avviene in una
frazione di secondo... non saprei dire  per velocita' o uso di memoria quale
dei due sia meglio!?.. In partiolare per la memoria considerando tenere
diverse decine di file che non compressi hanno la dimensione di 10-50kb  che
differenze ci sarebbero?... Meglio memorizzare solo la Stringa (come nel tuo
esempio) e ritraformarla ogni volta in varie parti  float - int -string  o
memorizzare come faccio ora gli array di numerei e stringhe?... cosa ne
dici?...
Grazie ancora.
ciao

 doverli ritrasformare ogni volta...
L'idea e' giusta - preservare i dati "grezzi" serve solo quando i vari 
processing successivi sono diversi. Se nel tuo caso il processing e' lo 
stesso ogni volta, e' certo piu' furbo farlo una volta sola. ;)
Solo, l'idea sarebbe che in Java (o in qualunque linguaggio OO) i 
risultati, ammenoche' non siano primitivi (tipo, "un" intero, "una" stringa 
eccetera), vadano incapsulati in istanze di classi appositamente costruite. 
Memorizzarli in array del tutto indipendenti e usare l'indice per 
identificare i componenti che contengono dati relativi allo stesso elemento 
e' Male. :)


 e' Male. :)
Perche' e' male?..  cosa intedi per male?
Tieni prsente che l'acceso ai vari dati che corrisponderebbero ad un file
diverso nel mio caso avviene saltuarimaente e li prendo tutti quanti in una
sola volta (come se riscaricassi il file) non prendo un po di uno e un po'
dell'altro...  oltretutto anche il codice e' semplice... dopo la *scoperta*
che e' possibile copiare array bidimesionale semplicemente cosi  a =b; senza
alcun loop.
Ciao grazie
Oxy


 elemento
forse non sono stato chiaro su come uso i vector-array, mi spiego meglio :
per ogni file memorizzo nel vector  dati[0]  un intero array float
bidimensionale in dati[1] un array int in   dati[2] una array di stringhe
ecc... fino a dati[7]. Salturiamente ricarico il "file virtuale"
riprendendo tutti gli array completi. Non accedo mai qua e la ai singoli
elementi dei vari array memorizzati nei vector.
Mi sono spiegato?..
Ciao

 
-- 
Paolo Giarrusso, Blaisorblade
Togliere solo REMOVEONLYTHIS per rispondere
Linux Kernel 2.4.19 on an i686
Firma "made in Vim"

 della memoria: 2 giga/s, all'incirca, con la DDR).
Cerchero di capire la prima parte del discorso che non mi e' del tutto
chiara...
mentre per la seconda parte posso dirti che i file sono piccoli (compressi
da 1 a 15 kb )  salvarli sudisco non posso dovri chiedere permessi, cosa ch
non voglio fare..
Intanto grazie.
Ciao
Oxy

 Riga r=(Riga)vettore.get(i);
no assolutamente, mi sa che non mi sono spiegato, ecco cosa faccio per il
caricamento dati nel Vector:
///////////////
float x[][]=new float[3000][6]
int  i[]=new int[3000];
inerimento dati presi dalle righe del file
datiFile[0].addElement(x);
datiFile[1].addElement(s);
/////////////
poi, quando li riprendo (ricarica file virtuale):
x = (float[][])  datiFile[0].elementAt(n);
i = (int[])  datiFile[1].elementAt(n);
di questi array ne faro' poi  un uso massiccio, leggendoli sempre  tutti o
comunque un bel pezzo ogni volta, con un loop  (mai  le singole righe in
posizioni varie) ,  usando i dati per compiere calcoli che a loro volta
vengono  puoi trasformati in figure grafiche. Tutte queste operazione  a
differenza del caricamento possono essere eseguite in continuazione
ricalcolando i valori in realtime secondo l'interazione dell'utente, anche
in maniera continutiva .  Vuoi dirmi che c'e' qualcosa di meglio di un array
di numeri (int o float che siano) per essere usati in un loop di calcoli?
Grazie ciao

 riuscivo a riprenderle!!?!?!...
Un Vector va benissimo. Per "riprenderle", fai un cast: ad esempio,
se ti serve il terzo oggetto nel vettore v, che ha classe Pippo, scrivi
Pippo pippo = (Pippo)v.elementAt(3);


 Pippo pippo = (Pippo)v.elementAt(3);
Grazie... non ci era arrivato... ma purtroppo sto scoprendo che le classi
costano (kb) e quindi trattandosi di applet vanno usate solo se strettamente
necessarie, solo se vengono riutilizzate molto. Ieri per fare un bel lavoro
ho voluto togliere una parte/funzione e metterla in un class a parte... solo
questo mi e' costato 1kb compresso... Ho riportato dentro la funzione. :-/
Ciao Grazie
