Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [Java]Scrivere su file

  1. #1

    [Java]Scrivere su file

    Inanzi tutto preannuncio che sono un neofita del java, non ho nemmeno finito di leggere il mio manuale di java quindi scusatemi se magari faccio domande che sembrano ovvie per molti

    Ho appena studiato il capitolo sulla manipolazione dei file, a dir il vero il capitolo trattava solo la lettura tramite l'oggetto FileReader.

    Ecco un piccolo programma che ho creato tramite ciò che ho imparato, completamente funzionante

    codice:
    import java.io.*;
    
    public class file2{
    	
    	public static void main(String[]args) throws IOException
    	{
    		//inposto flusso dati
    		BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
    		//Percorso file di input
    		String input = "input.txt";
    		//imposto flusso del file
    		BufferedReader fileIn = new BufferedReader(new FileReader(input));
    		
    		String currentLine = fileIn.readLine();
    		double somma = 0;
    		while(currentLine != null)
    			{
    				//visualizza riga corrente
    				System.out.println(currentLine);
    				double value = Double.parseDouble(currentLine);
    				somma = somma + value;
    				//leggi stringa successiva
    				currentLine = fileIn.readLine();
    			}
    			System.out.println(somma);
    	}
    
    
    
    }
    Ora vorrei sapere se volessi scrivere e/o cancellare qualcosa sul mio file "input.txt", ad esempio un numero o una lettera (il mio programma legge solamente) se non una stringa, come si fa? potete farmi un esempio, magari un piccolo programma (o anche una modifica al mio proramma) funzionante che esegua la scrittura sul file input.txt ?

    Perchè ho letto sulle API qualcosa riguardo l'oggetto FileWriter però un pò per l'inglese (ho trovato solo le api in inglese), un pò per il fatto che non me ne intendo ancora moltissimo non sono riuscito a concludere nulla.

    Grazie mille in anticipo,
    Guylmaster.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    codice:
     public boolean salva(){
          PrintWriter out=null;
           int i;
           try{
             OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(
          "fileoutput",true)); //true per fare l'append e non sovrascrivere 
            out = new PrintWriter(fout);
            out.print(qua metti quello che vuoi scrivere);
            out.close();
            out.flush();
           }catch(Exception e){return false;}
           return true;}
    Questa è la base della scrittura su file poi tu puoi aggiungere altri print(), metter cicli e cosi via...
    non ti posso postare di più perchè viene da un progetto un esteso e non capiresti molto

    Per modificare un file devi fare prima una lettura salvando il contenuto in una struttura dati, modificare la struttura dati e poi riscrivere sul file...

  3. #3
    In giro ho trovato anche il seguente codice, mi sapresti dire che cambia dal tuo al mio?

    codice:
    String stringa = "bau";
    
       PrintStream ps = new PrintStream( new FileOutputStream(input, false) );
       ps.println(stringa);
       ps.close();
    In ogni caso per sovrascrivere devi imagazzinare tutto in un vettore e poi riscrivere l'intero file? non puoi sovrascrivere nemmeno riga per riga?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    per la printStream vai qui e mi pare di aver capito che traduce tutto in bytes e li scrive...

    http://java.sun.com/j2se/1.4.2/docs/...intStream.html

    Per sovrascrivere potresti anche leggere il file riga per riga, analizzarla con uno StringTokenizer, modificarla dove serve e poi riscriverla nella sua pos.

  5. #5
    Originariamente inviato da perzem
    per la printStream vai qui e mi pare di aver capito che traduce tutto in bytes e li scrive...

    http://java.sun.com/j2se/1.4.2/docs/...intStream.html

    Per sovrascrivere potresti anche leggere il file riga per riga, analizzarla con uno StringTokenizer, modificarla dove serve e poi riscriverla nella sua pos.
    Per analizzarla ho studiato l'index.Of() o qualcosa del genere. Quindi potrei anche analizzarlo e reiscriverlo riga per riga. Per caso riesci a buttamele giu due righe che leggono e analizzano riga per riga per poter capire meglio?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    Questa legge la riga da file.
    Pos rappresenta la posizione nel file e viene calcolata con il numero di caratteri, quindi quando la chiami la prima volta gli passi 0 (così si mette all'inizio del file),poi per le chiamate future dovrai sommarci le lunghezze delle righe lette + 2 caratteri per ogni riga.


    codice:
    public static String LeggiDaFile1(long pos){
            try{
              RandomAccessFile out = new RandomAccessFile("input","r");
              out.seek(pos);
              String s = out.readLine();
              out.close();
              return s;
            }catch(IOException e){
              return null;//"ERRORE : lettura da file";
            }
          }


    Per lo StringTok

    codice:
    String s=LeggiDaFile1(0);
    int cont=0;
    StringTokenizer st = new StringTokenizer(s," ", false);
     do{
       cont=cont+s.length()+2;
       temp=st.nextToken();
           try {
             while(st.hasMoreTokens()){
     
             //qui ci metti le tue funz.
     
    
             temp=st.nextToken();
             }
            s = LeggiDaFile(cont);
               } catch (Exception e) {return false;}
     }while(s!=null);
     return true;
    l'ho fatta un po' a mente perchè sul mio pc stranamente StringTok non ne vuol sapere di girare

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 © 2024 vBulletin Solutions, Inc. All rights reserved.