Ho seguito tutto il corso in una giornata (mi serviva solo ripasso visto che non toccavo Java da 4/5 anni, ma ci avevo già lavoricchiato). Sarebbe molto utile un corso spring boot! Ottimi contenuti, bravo!
Non capisco come mai quando uso l'append() cancella il contenuto precedente e inserisce la nuova riga. Anche per da quanto ho capito questo dovrebbe essere il comportamento delle write().
Ciao. Bel video. complimenti. C'è una cosa che non mi è chiarissima: quando scrivo [ data = reader.read( ); ] l'oggetto indicato da qual è ? Perché se scrivo data = reader.read( ); System.out.println(data); data = reader.read( ); System.out.println(data); prima mi stampa il numero ascii relativo alla prima lettera del file, dopo quello relativo alla seconda; è come se il sistema tenesse conto di quante volte ho usato il metodo read( ) applicato al file reader. E' così che funziona?
Lui dichiara data come intero quindi quando va a leggere ogni elemento del file lo salva come intero, poi va a stamparlo facendo print((char) data), con questo (char) data sta facendo un cast esplicito per indicare a print di stampare il numero convertito in carattere.
È ciò che accade con il ciclo while... Stai solo scrivendo quel ciclo a mano. Se non erro in ogni caso si può indicare il character che si vuole leggere come parametro
Ciao! Ho provato a creare una funzione che salvi dei dati, ma ogni volta che la mando mi sovrascrive i dati nel file (nonostante abbia messo "append"), qualcuno ha idea del perchè? public void saveData(String path, String data) { try { FileWriter writer = new FileWriter(path);
Buongiorno @ChrisssZero, arrivo solo ora a questo corso e non sono ferratismo in Java, ma leggendo la documentazione (cosa consigliata) si capisce che non c'è molta differenza tra i metodi append() e write(). Retaggio e aggiornamenti di vecchie versioni. In questo caso FileWriter.write restituisce un void ed accetta solo stringe. FileWrite.append deriva dalla class Appendable e accetta un carattere o una sequenza di caratteri. Fai questa prova: dal tutorial quando ti trovi alla situazione ad 08:05 (1 write e 2 append) prova a scrivere subito dopo la definizione di writer, tra il rigo 21 e 22 prima di "Ciao sono.." questo: writer.write(null); Esegui. Errore! Non puoi avere una stringa di tipo null. sostituisci write con append: writer.append(null); Senza considerare che i tipi di valore ritornati sono differenti: write è void (quindi non ritorna e te lo prendi com'è ovvero con errore nel programma runtime), mentre append ritorna il metodo Writer. L'importanza di cosa ritornino: pensa se invece di una stringa definta da doppi apici fosse una variabile stringa proveniente da chissà mai quale altra parte del codice. Ultimo esempio della differenza write/append di FileWrite dal manuale a proposito di append: An invocation of this method of the form out.append(csq) behaves in exactly the same way as the invocation out.write(csq.toString()) Per aggiungere qualcosa al file, non basta il metodo append. Bisogna proprio aprire il file in modalità append. Sempre dall'esempio di @EdoardoMidali (solito minutaggio di riferimento) al rigo 21 aggiungere ,true (virgola true) dopo il nome del file: FileWriter writer = new FileWriter("prova.txt",true); Togli eventuali esperimenti da me suggeriti e tieni il resto del codice come quello di @EdoardoMidali. Adesso prova a lanciare il programma almeno 2 volte, o più, e quarda il contenuto del file prova.txt. Forse non l'ho spiegato benissimo, ma spero di aver chiarito un dubbio in cui ero cascato anch'io all'inizio. Lascio a @EdoardoMidali eventuali altri approfondimenti. Un saluto sperando di essere stato utile, Gio.
Ciao, ho un problemino con append, sostanzialmente non appende ma riscrive. Inoltre ho avuto anche un problema con , che on andava a capo, ma quello l'ho risolto con . Grazie mille in anticipo
Ciao scusa un’informazione per caso in futuro pensi di fare un corso di informatica tipo scuole superiori con argomenti ad esempio sistema binario etc?
ciao mi sapresti dire perchè in intellij mi dà sempre errore di lettura file dicendo che non esiste?(quindi printa la parte del catch) il codice è pure preso dal mio prof FileReader reader = new FileReader("percorso del file copiato(lho creato in src come il main"); FileWriter writer=new FileWriter("prova.txt"); do { next = reader.read(); if (next != -1) { char c = (char) next; writer.write(c); } } while (next != -1); reader.close(); writer.close(); } catch (IOException e) { System.out.println("errore di IO"); System.out.println(e); }
Ho seguito tutto il corso in una giornata (mi serviva solo ripasso visto che non toccavo Java da 4/5 anni, ma ci avevo già lavoricchiato). Sarebbe molto utile un corso spring boot! Ottimi contenuti, bravo!
Bravissimo , spiegazioni chiare e comprensibili! top.
grazie!
Con l'introduzione di Java NIO che apporta molte migliorie e soprattutto, non è bloccante, ha ancora senso utilizzare Java IO?
Non capisco come mai quando uso l'append() cancella il contenuto precedente e inserisce la nuova riga. Anche per da quanto ho capito questo dovrebbe essere il comportamento delle write().
Qual è l'import per poter eseguire queste funzioni?
Grazie!
Fantastico. Se supero l’esame di Java ti offro una pizza
😋😋
superata?
Ciao. Bel video. complimenti.
C'è una cosa che non mi è chiarissima: quando scrivo [ data = reader.read( ); ] l'oggetto indicato da qual è ?
Perché se scrivo
data = reader.read( );
System.out.println(data);
data = reader.read( );
System.out.println(data);
prima mi stampa il numero ascii relativo alla prima lettera del file, dopo quello relativo alla seconda; è come se il sistema tenesse conto di quante volte ho usato il metodo read( ) applicato al file reader. E' così che funziona?
Lui dichiara data come intero quindi quando va a leggere ogni elemento del file lo salva come intero, poi va a stamparlo facendo print((char) data), con questo (char) data sta facendo un cast esplicito per indicare a print di stampare il numero convertito in carattere.
È ciò che accade con il ciclo while... Stai solo scrivendo quel ciclo a mano. Se non erro in ogni caso si può indicare il character che si vuole leggere come parametro
Ciao, vorrei scrivere sul file di testo attributi diversi da stringe, come posso fare?
Ciao! Ho provato a creare una funzione che salvi dei dati, ma ogni volta che la mando mi sovrascrive i dati nel file (nonostante abbia messo "append"), qualcuno ha idea del perchè?
public void saveData(String path, String data)
{
try {
FileWriter writer = new FileWriter(path);
writer.append(data + "#");
writer.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
Buongiorno @ChrisssZero, arrivo solo ora a questo corso e non sono ferratismo in Java,
ma leggendo la documentazione (cosa consigliata) si capisce che non c'è molta differenza tra
i metodi append() e write(). Retaggio e aggiornamenti di vecchie versioni.
In questo caso FileWriter.write restituisce un void ed accetta solo stringe.
FileWrite.append deriva dalla class Appendable e accetta un carattere o una sequenza di caratteri.
Fai questa prova: dal tutorial quando ti trovi alla situazione ad 08:05 (1 write e 2 append) prova
a scrivere subito dopo la definizione di writer, tra il rigo 21 e 22 prima di "Ciao sono.." questo:
writer.write(null);
Esegui.
Errore! Non puoi avere una stringa di tipo null.
sostituisci write con append:
writer.append(null);
Senza considerare che i tipi di valore ritornati sono differenti: write è void (quindi non ritorna e te
lo prendi com'è ovvero con errore nel programma runtime), mentre append ritorna il metodo Writer.
L'importanza di cosa ritornino: pensa se invece di una stringa definta da doppi apici fosse una variabile stringa proveniente da chissà mai quale altra parte del codice.
Ultimo esempio della differenza write/append di FileWrite dal manuale a proposito di append:
An invocation of this method of the form out.append(csq) behaves in exactly the same way as the invocation
out.write(csq.toString())
Per aggiungere qualcosa al file, non basta il metodo append. Bisogna proprio aprire il file in modalità append.
Sempre dall'esempio di @EdoardoMidali (solito minutaggio di riferimento) al rigo 21 aggiungere ,true (virgola true) dopo il nome del file:
FileWriter writer = new FileWriter("prova.txt",true);
Togli eventuali esperimenti da me suggeriti e tieni il resto del codice come quello di @EdoardoMidali.
Adesso prova a lanciare il programma almeno 2 volte, o più, e quarda il contenuto del file prova.txt.
Forse non l'ho spiegato benissimo, ma spero di aver chiarito un dubbio in cui ero cascato anch'io all'inizio.
Lascio a @EdoardoMidali eventuali altri approfondimenti.
Un saluto sperando di essere stato utile,
Gio.
Ciao, ho un problemino con append, sostanzialmente non appende ma riscrive.
Inoltre ho avuto anche un problema con
, che on andava a capo, ma quello l'ho risolto con
. Grazie mille in anticipo
Ho lo stesso problema con append( ), sei riuscito a capire ?
Ciao scusa un’informazione per caso in futuro pensi di fare un corso di informatica tipo scuole superiori con argomenti ad esempio sistema binario etc?
non saprei, soprattutto perchè ho in coda +30 corsi. Andrò avanti a pubblicare credo per 2 annetti
@@EdoardoMidali ah ok grazie lo stesso
farai un corso di java avanzato magari con implementazioni di esercizi?
yes
@@EdoardoMidali godo!
@@EdoardoMidali Fantastico, non vedo l'ora!
@@EdoardoMidali quando?
ciao mi sapresti dire perchè in intellij mi dà sempre errore di lettura file dicendo che non esiste?(quindi printa la parte del catch) il codice è pure preso dal mio prof
FileReader reader = new FileReader("percorso del file copiato(lho creato in src come il main");
FileWriter writer=new FileWriter("prova.txt");
do {
next = reader.read();
if (next != -1) {
char c = (char) next;
writer.write(c);
}
} while (next != -1);
reader.close();
writer.close();
} catch (IOException e) {
System.out.println("errore di IO");
System.out.println(e);
}
perchè dopo il video 38 è scritto che gli ultimi video sono nascosti?
esce un video al giorno
@@EdoardoMidali ah grazie, scusami. complimenti per i tutorial.