logo

Crearea unui fișier utilizând FileOutputStream

Clasa FileOutputStream aparține fluxului de octeți și stochează datele sub formă de octeți individuali. Poate fi folosit pentru a crea fișiere text. Un fișier reprezintă stocarea datelor pe un al doilea mediu de stocare, cum ar fi un hard disk sau CD. Dacă un fișier este sau nu disponibil sau poate fi creat depinde de platforma de bază. Unele platforme în special permit ca un fișier să fie deschis pentru scriere de către un singur FileOutputStream (sau alte obiecte de scriere de fișiere) la un moment dat. În astfel de situații, constructorii din această clasă vor eșua dacă fișierul implicat este deja deschis. FileOutputStream este destinat scrierii fluxurilor de octeți bruti, cum ar fi datele de imagine. Pentru a scrie fluxuri de caractere, luați în considerare utilizarea FileWriter. Metode importante:
    void close() : Închide acest flux de ieșire al fișierului și eliberează orice resurse de sistem asociate cu acest flux. protected void finalize() : Curăță conexiunea la fișier și se asigură că metoda de închidere a acestui flux de ieșire a fișierului este apelată atunci când nu mai există referințe la acest flux. void write(octet[] b): Scrie octeți b.length din matricea de octeți specificată în fluxul de ieșire al fișierului. void write(byte[] b int off int len): Scrie len octeți din matricea de octeți specificată începând cu offset în acest flux de ieșire al fișierului. void write(int b): Scrie octetul specificat în acest flux de ieșire al fișierului.
Următorii pași trebuie urmați pentru a crea un fișier text care stochează unele caractere (sau text):
    Citirea datelor: First of all data should be read from the keyboard. For this purpose associate the keyboard to some input stream class. The code for using DataInputSream class for reading data from the keyboard is as:
    DataInputStream dis =new DataInputStream(System.in);
    Here System.in represent the keyboard which is linked with DataInputStream object Trimiteți date către OutputStream: Now associate a file where the data is to be stored to some output stream. For this take the help of FileOutputStream which can send data to the file. Attaching the file.txt to FileOutputStream can be done as:
    FileOutputStream fout=new FileOutputStream(file.txt);
    Citirea datelor din DataInputStream: The next step is to read data from DataInputStream and write it into FileOutputStream . It means read data from dis object and write it into fout object as shown here:
    ch=(char)dis.read(); fout.write(ch);
    Închideți fișierul:În cele din urmă, orice fișier ar trebui să fie închis după efectuarea operațiunilor de intrare sau de ieșire pe el, altfel datele ar putea fi corupte. Închiderea fișierului se face prin închiderea fluxurilor asociate. De exemplu fout.close(): va închide FileOutputStream, prin urmare nu există nicio modalitate de a scrie date în fișier.
Implementare: Java
//Java program to demonstrate creating a text file using FileOutputStream import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; class Create_File {  public static void main(String[] args) throws IOException   {  //attach keyboard to DataInputStream  DataInputStream dis=new DataInputStream(System.in);  // attach file to FileOutputStream  FileOutputStream fout=new FileOutputStream('file.txt');  //attach FileOutputStream to BufferedOutputStream  BufferedOutputStream bout=new BufferedOutputStream(fout1024);  System.out.println('Enter text (@ at the end):');  char ch;  //read characters from dis into ch. Then write them into bout.  //repeat this as long as the read character is not @  while((ch=(char)dis.read())!='@')  {  bout.write(ch);  }  //close the file  bout.close();  } } 
If the Program is executed again the old data of file.txt will be lost and any recent data is only stored in the file. If we don’t want to lose the previous data of the file and just append the new data to the end of already existing data and this can be done by writing true along with file name.
FileOutputStream fout=new FileOutputStream(file.txttrue); 

Îmbunătățirea eficienței utilizând BufferedOutputStream

Normally whenever we write data to a file using FileOutputStream as:
fout.write(ch);
Here the FileOutputStream is invoked to write the characters into the file. Let us estimate the time it takes to read 100 characters from the keyboard and write all of them into a file.
  • Să presupunem că datele sunt citite de la tastatură în memorie folosind DataInputStream și că este nevoie de 1 secundă pentru a citi 1 caracter în memorie și acest caracter este scris în fișier de către FileOutputStream petrecând încă o secundă.
  • Deci pentru citirea și scrierea unui fișier va dura 200 de secunde. Acest lucru este pierderea mult timp. Pe de altă parte, dacă sunt folosite clasate Buffered, ele furnizează un buffer care este mai întâi umplut cu caractere din buffer care poate fi scris imediat în fișier. Clasele tamponate ar trebui utilizate în conexiune cu alte clase de flux.
  • First the DataInputStream reads data from the keyboard by spending 1 sec for each character. This character is written into the buffer. Thus to read 100 characters into a buffer it will take 100 second time. Now FileOutputStream will write the entire buffer in a single step. So reading and writing 100 characters took 101 sec only. In the same way reading classes are used for improving the speed of reading operation.  Attaching FileOutputStream to BufferedOutputStream as:
    BufferedOutputStream bout=new BufferedOutputStream(fout1024);
    Here the buffer size is declared as 1024 bytes. If the buffer size is not specified then a default size of 512 bytes is used
Metode importante ale clasei BufferedOutputStream:
    void flush() : Șterge acest flux de ieșire tamponat. void write(byte[] b int off int len): Scrie len octeți din matricea de octeți specificată începând cu offset în acest flux de ieșire tamponat. void write(int b): Scrie octetul specificat în acest flux de ieșire tamponat.
Ieșire:
C:> javac Create_File.java C:> java Create_File Enter text (@ at the end): This is a program to create a file @ C:/> type file.txt This is a program to create a file 
Articole înrudite:
  • CharacterStream vs ByteStream
  • Clasa de fișiere în Java
  • Gestionarea fișierelor în Java folosind FileWriter și FileReader
Creați un test