Newsgroup: it.comp.java
Titolo: Per una classe di gestione dei file [2/3]

Compilate con Java2.
Usate JavaDoc per una visualizzazione immediata dei metodi.
============================================================================
=======
package Filer;
/**
 *
 * FileUtil.java
 * Utilità per i file di testo.
 * @author: Alessio Saltarin
 * @author: 
http://paginej.jumpy.it/guildenstern
 * @version: 0.2
 *
 */
import java.io.*;
public final class FileUtil
{
  /**
   * get the instance for FileUtil
   * @return a FileUtil usable instance
   */
  public static FileUtil getFileUtil() { return fu; }
  /**
   * Create a text file
   * @param pathOfFile Complete Path of File
   * @param text String to save into file
   */
  public void createFile(String pathOfFile, String text)
  {
    try
    {
      PrintWriter outpw = new PrintWriter(    // utilizziamo il modo testo
            new BufferedWriter(               // bufferizzato
              new FileWriter(pathOfFile)));
      outpw.print(text);
      outpw.close();
    }
    catch (FileNotFoundException fnfe)
    {
      System.err.println("Il file "+pathOfFile+" non è accessibile");
    }
    catch (Exception e)
    {
      e.printStackTrace(); // printa per default su System.err
    }
  }
  /**
   * Create an empty text file
   * @param pathOfFile Complete Path of File
   */
  public void createFile(String pathOfFile)
  {
    this.createFile(pathOfFile,"");
  }
  /**
   * Delete a file
   * @param pathOfFile Complete Path of File to delete
   * @return true if the file has been deleted
   */
  public boolean deleteFile(String pathOfFile)
  {
    boolean deleted = false;
    try
    {
      File toDelete = new File(pathOfFile);
      if (toDelete.exists())
        deleted = toDelete.delete();
      else
        System.err.println("Il file "+pathOfFile+" non esiste.");
    }
    catch (Exception ex)
    {
      System.err.println("Impossibile cancellare "+ pathOfFile + ": " +
ex.getMessage());
    }
    return deleted;
  }
  /**
   * Append some text to an existing text file
   * @param pathOfFile Complete Path of File
   * @param text String to save into file
   */
  public void appendFile(String existingFile, String text)
  {
    boolean ilFileEsiste = true;
    FileReader fw;
    // Il file esiste?
    try
    {
      fw = new FileReader(existingFile);
      fw.close();
    }
    catch (FileNotFoundException ex)
    {
      ilFileEsiste = false;
      System.err.println("Il file " + existingFile + " non esiste.");
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
    if (ilFileEsiste)
    {
        try
        {
          PrintWriter outpw = new PrintWriter(         // utilizziamo il
modo testo
                new BufferedWriter(                    // bufferizzato
                  new FileWriter(existingFile,true))); // in modalità append
(true)
          outpw.print(text);
          outpw.close();
        }
        catch (FileNotFoundException fnfe)
        {
          System.err.println("Il file "+existingFile+" non è accessibile");
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
    } // endif
  }
  /**
   * Used only for test purposes.
   * @deprecated
   */
  public void test()
  {
    this.createFile("vuoto.txt");
    this.createFile("pippo.txt","prova file pippo");
    this.appendFile("pippo.txt"," - xx e ci aggiungo questo!");
    // Errore: file non trovato
    this.appendFile("pluto.txt"," - xx e ci aggiungo questo!");
    if (this.deleteFile("pippo.txt"))
      System.out.println("Ho cancellato pippo.txt");
    else
      System.out.println("Non sono riuscito a cancellare pippo.txt");
  }
  private static FileUtil fu = new FileUtil();
  private FileUtil() {}
 }

Ho dato una occhiata veloce ... non mi sembra che la classe sia il massimo
dell'efficienza. Aprire e chiudere continuamente OutputStrem e InputStream non
e', secondo me, una scelta azzeccata

 wrote in message
news:3A93AC74...@libero.it...


> (Poi in Java parlare di efficienza... ahem)
Eretico! :)

> (Poi in Java parlare di efficienza... ahem)
Possiamo sfatare questo mito?
Certo non si raggiungerà mai l'efficienza del C, ma c'è inefficienza e
inefficienza. Ad esempio per la grafica si può frignare sulla lentezza di
drawImage o usare gli array di bit.
Tutto è relativo...
Ciao.
Ale

 aperto e ciň che ho chiuso).
Dai, non sara' un dramma incorporare all'interno della tua classe un metodo che
apre lo stream  uno che lo chiude ...
Ciao.
P.S. Hai mai lavorato a Vimercate (torri bianche)?