Scrierea în fișiere

Clasa FileOutputStream

Fiecare instanță a clasei java.io.FileOutputStream este un flux de octeți de ieșire conectat la un fișier, în care se sriu octeții primiți din flux. Fluxul se poate conecta și la un flux de octeti de ieșire deja existent.
 

Constructorii și metodele clasei FileOutputStream

Constructori:
    public FileOutputStream(String name) throws FileNotFoundException - Deschide pentru scriere fișierul cu numele (și, eventual, calea) name și creează un flux de octeți către acest fișier; dacă fișierul nu există, se va crea pe disc un fișier nou, cu numele dat ca argument; excepția se generează dacă fișierul nu există și nici nu poate fi creat; scrierea în fișier se va face de la începutul acestuia ("peste" ceeace, eventual, exista deja scris);
    public FileOutputStream(String name, boolean append) throws FileNotFoundException - acționează la fel ca în cazul constructorului precedent, dar dacă al doilea parametru este true, scrierea se va face în coada fișierului deja existent (scrierea începe după ultima înregistrare deja existentă);
    public FileOutputStream(File file) throws IOException - se deschide pentru scriere fișierul indicat de calea file și se creează un flux de octeți către acesta; dacă fișierul nu există, se creează unul nou; scrierea se face de la începutul fișierului;
    public FileOutputStream(FileDescriptor fd) - creeaza un nou flux de octeți de ieșire, care se conectează la fluxul deja existent cu descriptorul fd.

Metode:

    public void write(int b) throws IOException - scrie în fișier un singur octet, conținut în argumentul b;
    public void write(byte[] b) throws IOException - scrie în fișier toti octeții conținuti în tabloul b;
    public void write(byte[] b, int off, int len) throws IOException - scrie în fișier len octeți din tabloul b începând de la poziția off (offset);
    public void close() throws IOException - închide fișierul;
    public final FileDescriptor getFD() throws IOException - întoarce un descriptor al acestui fișier;
 

Exemplu:
În fișierul TestFileOutput.java se dă un exemplu de aplicație, în care se testează metodele clasei FileOutputStream. Se deschide un fișier cu numele "ProbaScriere.txt" (dacă nu există, se creează unul nou). În fișier se scrie textul dat în linia de comandă. În acest scop, lansarea în execuție se face sub forma
    java TestFileOutput text_de_scris_în_fișier
După ce s-a scris textul, fișierul este închis, apoi este redeschis pentru citire și conținutul este afișat pe ecran. Se închide și se redeschide iarăși, dar de data aceasta pentru scriere "în coada" conținutului existent. Se scriu cuvintele "Text adăugat", după care se închide, se redeschide pentru citire și se afișează. Metoda de scriere în fișier folosită de fiecare dată este cea în care se scrie  un tablou de octeți. Pentru afișare pe ecran, a doua oară s-a folosit tot un flux creat ca instanță a clasei FileOutputStream, dar care a fost conectat la fluxul standard de iesire java.ioFileDescriptor.out, fiind astfel tratat acest flux ca un fișier.
 

Clasa FileWriter

Scrierea într-un fișier de text se poate face, de asemenea, folosind clasa FileWriter. Instanțele acestei clase sunt fluxuri de ieșire de caractere, prin care se face scrierea într-un fișier. Clasa FileWriter este derivată din java.io.OutputStreamWriter și folosește metodele acesteia.
 
Constructori:
    public FileWriter(String fileName) throws IOException - deschide fișierul fileName pentru scriere și creează un flux de caractere de ieșire conectat la acest fișier; dacă fișierul nu există, îl creează;
    public FileWriter(String fileName, boolean append) throws IOException - la fel ca în cazul constructorului precedent, dar, dacă al doilea parametru este true, scrierea în fișier se va face în coada celui deja existent;
    public FileWriter(File file) throws IOException - deschide pentru scriere fișierul indicat prin calea file și creează un flux de caractere de ieșire conectat la acest fișier;
    public FileWriter(FileDescriptor fd) - creează un flux de caractere de ieșire și îl conectează la fluxul deja existent, cu descriptorul fd;

Metode:
Metodele clasei FileWriter sunt moștenite de la clasa OutputStreamWriter.

    public void write(int c) throws IOException - scrie în fișier un singur caracter;
    public void write(char[] cbuf, int off, int len) throws IOException - scrie în fișierul de ieșire len caractere din tabloul de caractere cbuf, începând de la poziția off (offset);
    public void write(String str, int off, int len) throws IOException - scrie în fișier len caractere din șirul str începând de la poziția off;
    public void flush() throws IOException - golește conținutul zonei tampon, descărcându-l în fișierul de ieșire;
    public void close() throws IOException - închide fișierul de ieșire;
    public String getEncoding() - întoarce numele canonic al codului de caractere utilizat de acest flux.

Exemplu:
În fișierul TestFileWriter.java este dat un exemplu similar cu cel din fișierul TestFileOutput.java, în care în locul claselor FileInputStream și FileOutputStream s-au folosit clasele FileReader și, respectiv, FileWriter.



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați