PROBLEMA Uso RandomAccessFile

Alessandro001

Utente Attivo
166
7
CPU
Ryzen 5 1600 3.2GHz
Scheda Madre
MSI B350 Tomahawk
HDD
Seagate ST1000DM010 1 TB
RAM
2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
GPU
RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
Monitor
HP 27FW Monitor 27"
PSU
Cooler Master MasterWatt Lite 700 230V
Case
Aerocool Aero-800
Net
https://www.speedtest.net/result/8773872068.png
OS
Windows 10
Si crea un file di testo con il nome dato in input dall'utente.
Si carica il file con 'n' libri di classe Libro contenuti in un arraylist.
Se chiudo il programma e reinserisco il nome della libreria(file) già esistente a livello di arraylist non ci sono libri.
Come è possibile ovviare a questo problema

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

Skills07

Head of Development
Staff Forum
Utente Èlite
35,404
11,483
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
ciao se magari postassi qualcosa ad esempio del codice, forse potremmo capire cosa stai chiedendo
 

Alessandro001

Utente Attivo
166
7
CPU
Ryzen 5 1600 3.2GHz
Scheda Madre
MSI B350 Tomahawk
HDD
Seagate ST1000DM010 1 TB
RAM
2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
GPU
RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
Monitor
HP 27FW Monitor 27"
PSU
Cooler Master MasterWatt Lite 700 230V
Case
Aerocool Aero-800
Net
https://www.speedtest.net/result/8773872068.png
OS
Windows 10
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:

Alessandro001

Utente Attivo
166
7
CPU
Ryzen 5 1600 3.2GHz
Scheda Madre
MSI B350 Tomahawk
HDD
Seagate ST1000DM010 1 TB
RAM
2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
GPU
RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
Monitor
HP 27FW Monitor 27"
PSU
Cooler Master MasterWatt Lite 700 230V
Case
Aerocool Aero-800
Net
https://www.speedtest.net/result/8773872068.png
OS
Windows 10
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
6,440
5,091
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.
 

Alessandro001

Utente Attivo
166
7
CPU
Ryzen 5 1600 3.2GHz
Scheda Madre
MSI B350 Tomahawk
HDD
Seagate ST1000DM010 1 TB
RAM
2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
GPU
RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
Monitor
HP 27FW Monitor 27"
PSU
Cooler Master MasterWatt Lite 700 230V
Case
Aerocool Aero-800
Net
https://www.speedtest.net/result/8773872068.png
OS
Windows 10
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
 

Alessandro001

Utente Attivo
166
7
CPU
Ryzen 5 1600 3.2GHz
Scheda Madre
MSI B350 Tomahawk
HDD
Seagate ST1000DM010 1 TB
RAM
2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
GPU
RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
Monitor
HP 27FW Monitor 27"
PSU
Cooler Master MasterWatt Lite 700 230V
Case
Aerocool Aero-800
Net
https://www.speedtest.net/result/8773872068.png
OS
Windows 10

Andretti60

Utente Èlite
6,440
5,091
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.
 

Alessandro001

Utente Attivo
166
7
CPU
Ryzen 5 1600 3.2GHz
Scheda Madre
MSI B350 Tomahawk
HDD
Seagate ST1000DM010 1 TB
RAM
2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
GPU
RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
Monitor
HP 27FW Monitor 27"
PSU
Cooler Master MasterWatt Lite 700 230V
Case
Aerocool Aero-800
Net
https://www.speedtest.net/result/8773872068.png
OS
Windows 10
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
6,440
5,091
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.
 

Alessandro001

Utente Attivo
166
7
CPU
Ryzen 5 1600 3.2GHz
Scheda Madre
MSI B350 Tomahawk
HDD
Seagate ST1000DM010 1 TB
RAM
2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
GPU
RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
Monitor
HP 27FW Monitor 27"
PSU
Cooler Master MasterWatt Lite 700 230V
Case
Aerocool Aero-800
Net
https://www.speedtest.net/result/8773872068.png
OS
Windows 10
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
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili