PROBLEMA Uso RandomAccessFile

Skills07

Moderatore
Staff Forum
8,407
2,139
Hardware Utente
CPU
Ryzen 7 2700x
Dissipatore
Stock
Scheda Madre
Aourus Gigabyte X-470
Hard Disk
Samsung Evo 850 250gb,2tb toshiba, 500gb western digital, 160gb segate
RAM
16 gb G.Skill Tridentz 3200 mhz RGB
Scheda Video
Sapphire RX 580 8gb ddr5
Monitor
Samsung Smart TV Full HD 50 Pollici/ Hp ES 24 IPS
Alimentatore
XFX 80 plus 750 watt
Case
Aerecool xpredator x3
Sistema Operativo
Windows 10 Pro 64
ciao se magari postassi qualcosa ad esempio del codice, forse potremmo capire cosa stai chiedendo
 
Java:
Libro aux = head;
String S = new String();
//Input della variabile Stringa "S"
RandomAccessFile f = new RandomAccessFile(S, "rw" );
for(int i = 0; aux!=null; i++)
            {
                f.writeBytes("Libro Numero " + (i+1));
                f.writeBytes(aux.toString());
                aux = aux.getNext();
            }
            f.close();
Con questo codice viene dichiarata una libreria di nome "S" e viene stampata in un file di testo.
Ora, con RandomAccessFile in modalità "rw" se non trova il file lo crea altrimenti lo riapre.

Il problema è che se io creo il Catalogo "Biblioteca1" e chiudo il programma, lo riapro e reinserisco in S "Biblioteca1", mi riapre lo stesso file ma, la lista del programma, non conosce che ci sono già dei libri inseriti quindi quando faccio un pop dalla testa non mi elimina l'elemento che si trova nel file di testo perchè dice che la lista è vuota.
E' possibile sistemare questo problema oppure no? Grazie :)
 
Ultima modifica:
Pubblica anche il codice che legge il file, non solo quello che lo scrive.
Il programma base è quello di scrivere.
Ora se si volesse implementare la gestione di più Biblioteche quindi di più file txt come si dovrebbe fare?
Perché dopo averlo caricato la prima volta, se chiudo il file e riapro lo stesso txt, risulta che i libri precedentemente caricati non ci sono...

Inviato da SNE-LX1 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

Andretti60

Utente Èlite
3,221
2,091
Hardware Utente
Cosa vuole dire che il problema e' quello di scrivere? A me paret che to lo stia scrivendo, dal codice che hai postato. Piuttosto il problema e' dopo, quando una volta creato il file lo leggi e ne metti il contenuto nella lista che ovviamente e' vuota, avendo appena lanciato il programma.
 
Cosa vuole dire che il problema e' quello di scrivere? A me paret che to lo stia scrivendo, dal codice che hai postato. Piuttosto il problema e' dopo, quando una volta creato il file lo leggi e ne metti il contenuto nella lista che ovviamente e' vuota, avendo appena lanciato il programma.
Si ho sbagliato a digitare.
Comunque è proprio questo il problema
In seguito non mi è possibile informare il programma che la lista non è vuota. E non so come fare

Inviato da SNE-LX1 tramite App ufficiale di Tom\'s Hardware Italia Forum
 
Leggi il file, una linea per volta, quando la stringa inizia con "Libro Numero" sai che e' l'inizio di un nuovo elemento.
Non l'unico modo, ma basta per iniziare.
Quindi metto il puntatore del file a 0 e quando trova Libro Numero mette i campi nell'oggetto da caricare nella lista.
Ok ma come fare?
Dato che tipo Autore è scritto
Autore = Paperino
Deve andare dopo autore, dopo l'uguale e dopo lo spazio.
Non c'è altro modo? E poi se si dovesse usare questo modo come andarebbe implementato?

Inviato da SNE-LX1 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

Andretti60

Utente Èlite
3,221
2,091
Hardware Utente
Devi studiare:
1) come leggere un file una linea alla volta
2) le funzioni per riconoscere una stringa all'interno di una stringa
3) le funzioni per estrarre una stringa da un'altra stringa
Sono la base di qualsiasi linguaggio di programmazione.
 
Devi studiare:
1) come leggere un file una linea alla volta
2) le funzioni per riconoscere una stringa all'interno di una stringa
3) le funzioni per estrarre una stringa da un'altra stringa
Sono la base di qualsiasi linguaggio di programmazione.
Io ho pensato di mettere dentro una variabile stringa il rigo con readLine e con substring decidere la parola da tenere in considerazione
Dovrebbe funzionare

Inviato da SNE-LX1 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

Entra

oppure Accedi utilizzando