ultimo mio dubbio è come modificare una stringa su una riga di file txt, esempio:
Marco mele 0
Luca pere 0
moficarlo in
Marco mele 1
Luca pere 0
qualche suggerimento?
ultimo mio dubbio è come modificare una stringa su una riga di file txt, esempio:
Marco mele 0
Luca pere 0
moficarlo in
Marco mele 1
Luca pere 0
qualche suggerimento?
Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!
Allo stesso modo in cui abbiamo cancellato le stringhe.. Hai bisogno di un file temporaneo
codice:String linea; File origine = new File(filePath); File temp = new File(filePathTemp); FileReader fr = new FileReader(origine); BufferedReader br = new BufferedReader(fr); FileWriter fw = new FileWriter(temp); BufferedWriter bw = new BufferedWriter(fw); while ((linea = br.readLine())!= null) { //codice necessario per modificare la linea bw.write(lineaModificata); bw.newLine(); } br.close(); bw.close(); origine.delete(); temp.renameTo(origine);![]()
si avevo un idea di fare un costrutto simile ma a me interessava proprio il codice per modificare la linea...
Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!
Guarda qui: http://java.sun.com/javase/6/docs/ap...ng/String.html
ci sono tutti i metodi associati alla classe stringa. Quello che ti può interessare è
usando substring prendi tutti i caratteri tranne l'ultimo (nel tuo esempio "Marco mele ") e poi aggiungi l'ultimo carattere (nel tuo esempio "1")codice:substring(int beginIndex, int endIndex)
Oppure potresti usare
codice:replace(char oldChar, char newChar)![]()
thanks![]()
Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!
ok con
prendo tutto tranne lo zero finale però poi per aggiungere il numero 1?codice:substring(int beginIndex, int endIndex)
Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!
Per concatenare le stringhe si usa l'opreratore +
basta fare
codice:linea=linea.substring(0, linea.length()-1)+"1";![]()
linea = linea.substring(0, linea.length()-1).concat("1");Originariamente inviato da fr84
codice:linea=linea.substring(0, linea.length()-1)+"1";
è un po' più efficiente (non ha bisogno di creare lo StringBuffer/StringBuilder e fare gli append).
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ho fatto così
però mi da un eccezionecodice:public void Prova1(){ Stringa st=new Stringa(); String x; System.out.println("Inserisci etichetta numerica del pacco che si vuole cancellare"); System.out.print(""); x=st.leggiStringa(); try{ File origine=new File(path); //è il file da modificare File temp=new File(path); //file temporaneo su cui scrivo FileReader fr = new FileReader(origine); BufferedReader br=new BufferedReader(fr); FileWriter fw = new FileWriter(temp); BufferedWriter bw=new BufferedWriter(fw); String linea; while((linea=br.readLine())!=null){ linea = linea.substring(0, linea.length()-1).concat(x); bw.write(linea); bw.newLine(); } br.close(); bw.close(); origine.delete(); temp.renameTo(origine);} catch (IOException ex) { ex.printStackTrace(); } }
perche?codice:Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1938) at gestionepaccoprova.Prova.Prova1(Prova.java:36) at gestionepaccoprova.Main.main(Main.java:112)![]()
Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!
Se la linea è vuota "" l'indice end lo passi come -1 e succede che start (0) è maggiore di end (-1). Che è un errore secondo le specifiche di substring.Originariamente inviato da blackguardian
perche?![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet