PDA

View Full Version : [JAVA] Cancellare riga da file di testo


EnZiMa
20-09-2007, 17:15
Come da topic....

come faccio a farlo nel modo più semplice e veloce possibile? thanks ;)

EnZiMa
20-09-2007, 18:34
up è urgente pleeessseeee :mc:

PGI-Bis
20-09-2007, 18:52
Prendi il file e lo copi una riga per volta su un file temporaneo, quando incontri la linea da eliminare la salti e riprendi dalla linea successiva. Al termine sovrascrivi il file originale con il temporaneo.

franksisca
20-09-2007, 19:05
Prendi il file e lo copi una riga per volta su un file temporaneo, quando incontri la linea da eliminare la salti e riprendi dalla linea successiva. Al termine sovrascrivi il file originale con il temporaneo.

cosa vedo:eek: :eek: :eek: :eek: :eek:


un post di pgi senza milioni di righe di codice:eek: :eek: :eek: :eek:


sogno o son desto.................................





P.S.: scherzo naturalmente, era per scrivere nella sezione che manco da unn pò :D:D:D

e poi i tuoi commenti di solito sono proprio programmi già scritti :D

EnZiMa
20-09-2007, 21:11
private void deleteSng(String ng){
try {
File temp = File.createTempFile("preferiti",".txt");
temp.deleteOnExit();

BufferedWriter out = new BufferedWriter(new FileWriter(temp));
PrintWriter pw = new PrintWriter(out,true);
BufferedReader in = new BufferedReader(new FileReader(listaSng));

//scandisco le righe del file e non considero la riga che voglio eliminare
String linea = in.readLine();
while (linea != null) {
if (!linea.equals(ng+".xml")) {
pw.println(linea);
}
linea = in.readLine();
}

in.close();
out.close();
//pw.close();


File file= temp;
FileOutputStream fos=new FileOutputStream(file);

} catch (IOException e) {
}
}


mmm non ci riesco... :muro: :mbe:

^TiGeRShArK^
20-09-2007, 21:32
aggiungere un out.flush() prima dell'out.close() aiuta? :fagiano:

EnZiMa
20-09-2007, 21:40
nulla da fare :mc:

^TiGeRShArK^
21-09-2007, 00:31
nulla da fare :mc:

ma qual'è il prob specifico? :stordita:
io ho scritto dell'out.flush xkè sicuramente quelo mancava..
ma hai qualke errore o semplicemente nn ti scrive correttamente il file?

EnZiMa
21-09-2007, 08:52
ma qual'è il prob specifico? :stordita:
io ho scritto dell'out.flush xkè sicuramente quelo mancava..
ma hai qualke errore o semplicemente nn ti scrive correttamente il file?


try {
File temp = new File("_"+listaSng);
File listaBackup = new File(listaSng);
File nuovo = new File(listaSng);

String nomeFile=ng+".xml";

BufferedReader in = new BufferedReader(new FileReader(listaBackup));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(temp)));

//scandisco le righe del file e non considero la riga che voglio eliminare
String linea = in.readLine();
while (linea != null) {
if (!linea.equals(nomeFile)) {
out.println(linea);
}
linea = in.readLine();
}

in.close();
out.close();

Thread.sleep(500);

listaBackup.delete();

Thread.sleep(500);

temp.renameTo(nuovo);

Thread.sleep(500);

temp.createNewFile();

temp.delete();

} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}


Incredibile!!!!!!!! :stordita:

Per farlo funzionare ho aggiunto Thread.sleep(500)! A volte cmq java va in tilt...come in questo caso!!!

chi mi spiega come mai ho dovuto aggiungere un delay per far funzionare il codice?

:mbe:

EnZiMa
21-09-2007, 09:35
try {
File temp = new File("_"+listaSng);
File listaBackup = new File(listaSng);
File nuovo = new File(listaSng);

String nomeFile=ng+".xml";

BufferedReader in = new BufferedReader(new FileReader(listaBackup));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(temp)));

//scandisco le righe del file e non considero la riga che voglio eliminare
String linea = in.readLine();
while (linea != null) {
if (!linea.equals(nomeFile)) {
out.println(linea);
}
linea = in.readLine();
}

in.close();
out.close();

Thread.sleep(500);

listaBackup.delete();

Thread.sleep(500);

temp.renameTo(nuovo);

Thread.sleep(500);

temp.createNewFile();

temp.delete();

} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}


Incredibile!!!!!!!! :stordita:

Per farlo funzionare ho aggiunto Thread.sleep(500)! A volte cmq java va in tilt...come in questo caso!!!

chi mi spiega come mai ho dovuto aggiungere un delay per far funzionare il codice?

:mbe:

ops...mi ero dimenticato di chiudere il file in un altro metodo del programma! :doh: :asd: