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

    [JAVA]riempire file di testo da tastiera

    Ciao ragazzi

    mi sto un po esercitando con iifle di testo in java

    avendo già un file di testo devo riempirlo scrivendo da TASTIERA fino a che non premo 0 (zero) così salva e chiude il file

    codice:
    	public void inserisci(String nomeFile) throws IOException {
    
    		File f = new File(nomeFile + ".txt");
    		if (!f.exists()) {
    
    			System.out.println("il file non esiste ");
    			Scelta sc = new Scelta();
    			sc.selezione();
    		} else
    			System.out.println("inserire valori");
    		BufferedReader bufvalori = new BufferedReader(new InputStreamReader(
    				System.in));
    		String vals = bufvalori.readLine();
    		FileWriter fw = new FileWriter(f,true);
    		BufferedWriter bufw = new BufferedWriter(fw);
    		try {
    			while (! bufw.equals("0")) {
    
    				bufw.write(vals);
    				bufw.flush();
    				
    				
    			}
    			bufw.close();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    sicuramente sbaglio la condizione di uscita perchè il file non si chiude

    come posso risolvere?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: [JAVA]riempire file di testo da tastiera

    Originariamente inviato da ubuntuunixc
    Ciao ragazzi

    mi sto un po esercitando con iifle di testo in java

    avendo già un file di testo devo riempirlo scrivendo da TASTIERA fino a che non premo 0 (zero) così salva e chiude il file

    codice:
    	public void inserisci(String nomeFile) throws IOException {
    
    		File f = new File(nomeFile + ".txt");
    		if (!f.exists()) {
    
    			System.out.println("il file non esiste ");
    			Scelta sc = new Scelta();
    			sc.selezione();
    		} else
    			System.out.println("inserire valori");
    		BufferedReader bufvalori = new BufferedReader(new InputStreamReader(
    				System.in));
    		String vals = bufvalori.readLine();
    		FileWriter fw = new FileWriter(f,true);
    		BufferedWriter bufw = new BufferedWriter(fw);
    		try {
    			while (! bufw.equals("0")) {
    
    				bufw.write(vals);
    				bufw.flush();
    				
    				
    			}
    			bufw.close();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    sicuramente sbaglio la condizione di uscita perchè il file non si chiude

    come posso risolvere?
    E' la stringa restituita da readLine che devi comparare a "0" nella condizione di qualche ciclo, è lei ciò che inserisci da tastiera.
    Comunque come fai a leggere finché si verifica la tua condizione se la tua lettura da tastiera non è dentro ad un ciclo? Leggerai sempre e solo una volta? Non ho capito cos'hai fatto

  3. #3
    si devo leggere più stringhe da tastiera (premendo anche a capo) come se fosse word

    e poi usare una condizione di uscita per salvare ( ho pensato ad un particolare carattere) però se c'è un metodo migliore accetto anche quello

  4. #4
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Eccoti un pezzo di codice che dovrebbe funzionare (naturalmente devi completarlo):
    codice:
    BufferWriter bufw=null;
    try {
        FileWriter fw = new FileWriter(f,true);
        bufw = new BufferedWriter(fw);
        String vals=bufvalori.readLine();
        while (!vals.equals("0")) {
            bufw.write(vals);
            vals=bufvalori.readLine();
        } //wend
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        if (bufw!=null) {
            bufw.close();
        } //endif
    } //end Try/Catch/Finally
    Forse sarebbe più corretto utilizzare la classe Console per leggere dallo Standard Input, ma chissene.

    Ciao

  5. #5
    devi semplicemente:
    - aprire un file in scrittura;
    - aprire uno stream di input, input che verrà acquisito dal terminale;
    - ripetere, finchè non si è digitato lo 0, la lettura dallo stream e la scrittura su file;
    - chiudere lo stream di input e il file.

    eccoti una bozza che ho scritto di fretta, ma che funziona:
    codice:
    /**
     * @author Naruto 92
     */
    
    import java.io.*;
    
    public class Stream
    {
        private String estensione, zero;
        
        public Stream(){
            estensione=".txt";
            zero="0";
        }
        public void daTerminaleAFile(String nomeFile){
            if(!nomeFile.isEmpty()){
                try{
                    //creazione dell'oggetto File
                    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                    PrintWriter pw=new PrintWriter(new FileWriter(nomeFile+estensione, true));
                    System.out.print("");
                    String line;
                    while(!(line=br.readLine()).equals(zero)){
                        pw.println(line);
                    }
                    br.close();
                    pw.flush();
                    pw.close();
                }catch(IOException ex){
                    //da gestire
                }
            }else{
                //da gestire
            }
        }
        public static void main(String args[]){
            Stream s=new Stream();
            s.daTerminaleAFile("pippo");
        }
    }
    Ovviamente la devi adattare secondo le tue esigenze.

    Potresti anche procedere in un altro modo: salvare in una stringa, magari utilizzando un oggetto StringBuffer\Builder che è meglio, di volta in volta la stringa digitata e scriverla, alla fine dell'acquisizione, tutta in un colpo sul file.
    Tieni inoltre presente che, se lo zero venisse inserito in una frase, l'acquisizione non si fermerebbe in quanto la condizione sarebbe falsa. In questo caso puoi procedere in due modi:
    - controllare ogni volta se la stringa contenga o meno il carattere 0;
    - effettuare un'acquisizione carattere e per carattere e quindi effettuare il controllo sul singolo carattere inserito.

    spero di averti chiarito un pò le idee ^^
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

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.