Newsgroup: it.comp.java
Titolo: Sostituzione caratteri in un file di testo

ciao a tutti... sono disperato! il mio problema è questo: devo
scrivere un programma java che, in un file di testo, all'occorrenza di
un certo carattere, lo sostituisce con un altro carattere... e poi
applica la modifica all'intero file di testo.... vi posto quello che
sono riuscito a fare fino ad ora(senza successo :-( )) ... se poi
qualcuno mi spiega bene come funziona il BufferedReader e i vari
InputStreamReader,ecc.. lo ringrazio molto dato che sui libri che
possiedo non è spiegato benissimo!!! grazie..
Ecco il codice: (il nome del file e i 2 carattere in questione devono
essere inseriti da linea di comando)
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;
public class Prova {
public static void main(String[] args) throws IOException
{
	BufferedReader stdIn = new BufferedReader(new
InputStreamReader(System.in));
	System.out.print("inserisci il nome file: " );
	    String richiesta = null;
        String nomeFile = stdIn.readLine();
        System.out.print("inserisci il carattere sostitutivo: " );
        String car_n = stdIn.readLine();
        System.out.print("inserisci il carattere da sostituire: " );
        String car_v = stdIn.readLine();
        char c1,c2;
        c1 = car_n.charAt(0);
        c2 = car_v.charAt(0);
System.out.print("File : " + nomeFile + ". Sostituisco il carattere " +
c1 + " con il carattere " + c2 + " .");
        try{
            if (nomeFile.equals("*")) {
              System.out.println("Invio per continuare.");
              System.exit(0);
            }
            File f = new File(nomeFile);
        	if(!f.exists()){
        	throw new Exception("Il file " + nomeFile + "non esiste..");
        	}
            BufferedReader in = new BufferedReader(new
FileReader(nomeFile));
        	String line = in.readLine();
			while((line != null))
			{
		         line.replace(c1,c2);
		         System.out.print("File : " + nomeFile + " ho scambiato " +
c1 + " con " + c2 + " ");
			}
                }
          catch (Exception e) {
            System.out.println("Problemi nell'interazione da console:
");
            e.printStackTrace();
            System.out.print("\n^D(Unix)/^Z(Win)+invio per uscire,"+
                " solo invio per continuare: ");
 
            //
          }
 
			}
}

Marco Minelli ha scritto:

mi rispondo da solo :-) :
Ecco il codice modificato... adesso funziona.. manca solo la
scrittura(ovvero la vera e propria modifica del file):

public class Prova {






        	System.out.println("Ho letto dal file " + nomeFile + " la riga
" + line);
			if((line == null))
			System.out.println("Il file " + nomeFile + " è vuoto...");
			else
			{
              String temp = line.replace(c1,c2);
		         System.out.println("File : " + nomeFile + " ho scambiato " +
c1 + " con " + c2 + " ");
			     line = temp;
			     System.out.println("Ecco la riga con i caratteri cambiati:  " +
line);
			}
			}
          catch (Exception e) {
            System.out.println("Problemi nell'interazione da console:
");
            e.printStackTrace();
            System.out.print("\n^D(Unix)/^Z(Win)+invio per uscire,"+
                " solo invio per continuare: ");
            // il client continua l'esecuzione riprendendo dall'inizio
del ciclo
          }
 
			}
}

 scrittura(ovvero la vera e propria modifica del file):
Non scrivere sullo stesso file che stai modificando: Scrivi su uno nuovo 
che poi andrai a copiare/rinominare su quello di origine.
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !