Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Funzione leggere un file di testo e sostituire un particolare carattere

    Devo realizzare una funzione che prenda in input lo scheletro di un file di testo e sostituisca in esso un particolare carattere per poi salvare il file.

    Pensavo che la funzione potesse avere un'interfaccia di questo genere.

    codice:
    public void GeneraFile(String carattere_da_sostituire, String carattere_sostituto, String url_scheletro_file, String nome_file_salvato){
    
    }
    A questo punto avrei bisogno di una dritta su come implementare la funzione. Devo leggere i bytes e metterli un buffer? Se si come?

    Pensavo di caricare il file in un FileInputStream ma poi non ho ben chiaro come gestirlo.

    Potreste aiutarmi?
    Luca >> http://www.pollosky.it

  2. #2
    cosa intendi per scheletro del file di testo?
    Write Once, Run Everywhere.
    Write Less, Do More.

  3. #3
    Praticamente ho un file che rappresenta una sorta di modello, magari del tipo:


    Codice_Sorgente: $
    Codice_Dimensione: 1
    Proprietà: aaa


    supponiamo che questo sia lo scheletro...bene, io avevo intenzione attraverso un'iterazione di richiamare la funzione di sostituzione, che per ogni indice dell'iterazione caricasse questo scheletro per sostituire al carattere "$" un codice ricavato dall'iterazione e salvasse il file ottenuto dopo la sostituzione.

    Come si può realizzare?
    Luca >> http://www.pollosky.it

  4. #4
    Penso di esserci riuscito...ho implementato una funzione di questo tipo:
    codice:
    public void GeneraFile(String char_speciale, String char_sostituto, String url_scheletro_file, String url_nuovo_file){
    		try{
    		 BufferedReader rdr = new BufferedReader(new InputStreamReader(new FileInputStream(url_scheletro_file)));
    	     BufferedWriter wrt = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(url_nuovo_file)));
    	     String line=rdr.readLine();
    	     while(line!= null){
    	    	 line=line.replaceAll(char_speciale, char_sostituto);
    	    	 wrt.append(line);
    	    	 wrt.newLine();
    	    	 line = rdr.readLine();
    	     }
    	     wrt.close();
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    	}
    Dovrebbe funzionare correttamente.
    Luca >> http://www.pollosky.it

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LukeSky
    Dovrebbe funzionare correttamente.
    Concettualmente sì. A dire il vero però: di readLine() ne basterebbe solo 1 usato proprio nella condizione del while e la gestione delle eccezioni non è affatto correttissima (es. se avviene un errore di lettura, non chiudi né l'uno né l'altro file). La gestione delle eccezioni andrebbe fatta in modo molto più "difensivo" invece di mettere un close() dopo il while tanto per fare ...

    Inoltre il chiamante non ha alcun modo di capire se qualcosa è andato storto (ma se non ti interessa farlo sapere al chiamante, allora ok).
    Ah, e occhio che replaceAll usa le "espressioni regolari" e il $ è proprio uno dei caratteri speciali.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Grazie per la dritta...la perfezionerò.
    Luca >> http://www.pollosky.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.