Fluxurile pentru lucrul cu fisiere

Fluxurile pentru lucrul cu fisiere sunt cele mai usor de înteles. Clasele care implementeaza aceste fluxuri sunt urmatoarele:

  • FileReader, FileWriter - caractere
  • FileInputStream, FileOutputStream – octeti

Constructorii acestor clase accepta ca argument un obiect care sa specifice un anume fisier. Acesta poate fi un sir de caractere, on obiect de tip File sau un obiect de tip FileDescriptor.

Constructorii clasei FileReader:

 public FileReader( String fileName ) throws FileNotFoundException
 public FileReader( File file ) throws FileNotFoundException
 public FileReader( FileDescriptor fd )

Constructorii clasei FileWriter:

  public FileWriter( String fileName ) throws IOException
  public FileWriter( File file ) throws IOException
  public FileWriter( FileDescriptor fd )
  public FileWriter( String fileName, boolean append ) throws IOException

Cei mai uzuali constructori sunt cei care primesc ca argument numele fisierului. Acestia pot provoca exceptii de tipul FileNotFoundException în cazul în care fisierul cu numele specificat nu exista. Din acest motiv orice creare a unui flux de acest tip trebuie facuta într-un bloc try sau metoda în care sunt create fluxurile respective trebuie sa arunce exceptiile de tipul FileNotFoundException sau de tipul superclasei IOException.

Exemplu:

Acest program copiaza caracter cu caracter continutul unui fisier în alt fisier:

import java.io.*;
public class Flux {
    public static void main(String args[]) {
        FileInputStream in; //in este flux de intrare
        FileOutputStream out; //out este flux de iesire
        int ok;
        try {
            in = new FileInputStream(args[0]);
            try {
                out = new FileOutputStream(args[1]);
                ok = 0;
                //citesc fisierul caracter cu   caracter
                while(ok != -1) {
                    try {
                        ok = in.read();
                        out.write(ok);

                        System.out.print((char)ok);
                    }
                    catch (IOException e) {

                        System.out.println(e.getMessage());
                        System.exit(1);
                    }
                } //while
            }//try
            catch (IOException e) {
                System.out.println(e.getMessage());
                System.exit(1);
            }
        }//try
        catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }//main
}//clasa Flux

Share on


Echipa conspecte.com, crede cu adevărat că studenții care studiază devin următoarea generație de aventurieri și lideri cu gândire globală - și dorim ca cât mai mulți dintre voi să o facă!