Pages: [1]   Go Down
Print
Author Topic: Ottimizazzione programma sui file  (Read 1163 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Alex_47
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 409


The spiral's King


« on: 27-03-2009, 11:02:45 »

Ragazzi ho fatto questo piccolo programma sui file , ma c'è una cosa che non mi è chiara..
intanto posto il codice..

Code:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.*;

class creator
{
public static void main(String [] args) throws IOException
{
    InputStreamReader in = new InputStreamReader(System.in);
    BufferedReader tastiera = new BufferedReader(in);
   
    FileOutputStream f = null;

    try
    {
    boolean esci = false;
   
    do
    {
    int x;
    String nome;
   
    System.out.println("QUESTO E' UN PROGRAMMA SU CUI SI POSSONO EFFETTUARE DIVERSE OPERAZIONI SUI FILE");
    System.out.println("+--------------------+");
    System.out.println("|1-Crea File         |");
    System.out.println("|2-Scrivi su File    |");
    System.out.println("|3-Leggi File        |");
    System.out.println("|4-Esci              |");
    System.out.println("+--------------------+");
   
    System.out.println("Scegli quale operazione eseguire:");
    x= Integer.parseInt(tastiera.readLine());
   
   
    switch(x)
    {
    case 1: //CREA FILE
    System.out.println("Scegli il nome da dare al file creato:");
    nome = tastiera.readLine();
    f = new FileOutputStream(nome,true);
        break; //----------
   
   
    case 2: //SCRIVI FILE
   
        try
        {
        System.out.println("Scrivi il nome del file da scrivere:");
        nome = tastiera.readLine();
       
        FileWriter ps = new FileWriter(nome);
       
        System.out.println("Scrivi cio' che vuoi in questo file in append:");
                    String testo = tastiera.readLine();
                      ps.write(testo);
                     
                      ps.close();
       
        }
        catch(FileNotFoundException e)
        {
        System.out.println(e);
        }
        catch(IOException e)
        {
        System.out.println(e);
        System.exit(1);
        }
       
        break;//---------------
       
    case 3: //LEGGI FILE
         try
         {
         
            System.out.println("Scrivi il nome del file da leggere:");
        nome = tastiera.readLine();
       
        FileReader brt = new FileReader(nome);
                    int c;
                    while((c = brt.read()) != -1)
                    {
                        System.out.print((char)c);
                    }
                   
                    brt.close();
                   
                 }
                 catch(FileNotFoundException e)
         {
        System.out.println(e);
         }
         
         catch(IOException e)
         {
        System.out.println(e);
        System.exit(1);
         }

    break;//---------------
   
   
    case 4:
          esci = true;
         
    break;
    }
  }
  while(!esci);   
    }
    finally
    {
    f.close();
   
    }
}


}

ho fatto le funzioni scrivi file e leggi su file , ma ancora non so come far per far in modo che mi scriva su quel file di cui inserisco il nome , infatti ogni volta che uso "scrivi su file ", e scrivo il nome di un file che non esiste , me ne crea un altro.Mentre invece vorrei che mi scrivesse solo se il file esiste , mentre se non esiste si viene a creare un eccezzione , come posso fare?
« Last Edit: 27-03-2009, 11:05:01 by Alex_47 » Logged
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #1 on: 27-03-2009, 12:22:32 »

allora secondo me, la classe FileWriter scatena un eccezione soltanto se il file non esiste e NON può essere creato. Quindi se il file esiste e può essere creato tranquillamente, non scatenerà nessuna eccezione:

dalla javadoc:
Quote
Throws:
IOException - if the named file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason

Per fare quello che vuoi tu, io agirei nel seguente modo:

Code:
case 2: //SCRIVI FILE
   
try
    {
            System.out.println("Scrivi il nome del file da scrivere:");
            nome = tastiera.readLine();

            File f = new File(nome);   // Creo un oggetto di tipo file

            // Controllo se questo file esiste, se non esiste scateno una nuova eccezione FileNotFoundException
            if (!f.exists()) {
                throw new FileNotFoundException("Il file non esiste");
            }
           
            // Altrimenti creo un FileWriter
            else {
                FileWriter ps = new FileWriter(f, true);     // Lo creo in append
       System.out.println("Scrivi cio' che vuoi in questo file in append:");
                String testo = tastiera.readLine();
                ps.write(testo);
                ps.close();
            }
        }
        catch (FileNotFoundException ex) {
           System.out.println(e);
        }
        catch (IOException ex) {
        System.exit(1);
        }
     }
« Last Edit: 27-03-2009, 12:32:10 by k1r4 » Logged

Alex_47
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 409


The spiral's King


« Reply #2 on: 27-03-2009, 13:34:08 »

Sono riuscito a risolvere! grazie^^
« Last Edit: 27-03-2009, 14:05:55 by Alex_47 » Logged
Pages: [1]   Go Up
Print
Jump to: