logo

Stvaranje datoteke pomoću FileOutputStream

Klasa FileOutputStream pripada nizu bajtova i pohranjuje podatke u obliku pojedinačnih bajtova. Može se koristiti za stvaranje tekstualnih datoteka. Datoteka predstavlja pohranu podataka na drugi medij za pohranu kao što je tvrdi disk ili CD. Je li datoteka dostupna ili se može stvoriti ovisi o temeljnoj platformi. Neke platforme posebno dopuštaju otvaranje datoteke za pisanje pomoću samo jednog FileOutputStream-a (ili drugih objekata za pisanje datoteka) u isto vrijeme. U takvim situacijama konstruktori u ovoj klasi neće uspjeti ako je uključena datoteka već otvorena. FileOutputStream je namijenjen za pisanje tokova neobrađenih bajtova kao što su slikovni podaci. Za pisanje tokova znakova razmislite o korištenju FileWriter-a. Važne metode:
    void close() : Zatvara ovaj izlazni tok datoteke i oslobađa sve sistemske resurse povezane s ovim tokom. zaštićeni void finalize() : Čisti vezu s datotekom i osigurava da se metoda zatvaranja ovog izlaznog toka datoteke poziva kada više nema referenci na ovaj tok. void pisanje (bajt[] b) : Zapisuje b.length bajtove iz navedenog niza bajtova u ovaj izlazni tok datoteke. void write(byte[] b int off int len) : Zapisuje len bajtova iz navedenog polja bajtova počevši od pomaka u izlazni tok ove datoteke. void write(int b) : Zapisuje navedeni bajt u izlazni tok ove datoteke.
Za izradu tekstualne datoteke koja pohranjuje neke znakove (ili tekst) potrebno je slijediti sljedeće korake:
    Podaci o čitanju: 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 Pošalji podatke u 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);
    Čitanje podataka iz 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);
    Zatvori datoteku:Konačno, svaku datoteku treba zatvoriti nakon izvođenja ulaznih ili izlaznih operacija na njoj, inače bi podaci mogli biti oštećeni. Zatvaranje datoteke vrši se zatvaranjem pridruženih tokova. Na primjer, fout.close(): zatvorit će FileOutputStream stoga ne postoji način za pisanje podataka u datoteku.
Implementacija: 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); 

Poboljšanje učinkovitosti korištenjem 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.
  • Pretpostavimo da se podaci čitaju s tipkovnice u memoriju pomoću DataInputStream i potrebna je 1 sekunda za očitavanje 1 znaka u memoriju i taj znak upisuje FileOutputStream u datoteku uz utrošak još 1 sekunde.
  • Dakle, za čitanje i pisanje datoteke trebat će 200 sekundi. Ovo je gubljenje puno vremena. S druge strane, ako se koriste klase međuspremnika, one daju međuspremnik koji se prvo puni znakovima iz međuspremnika koji se mogu odmah zapisati u datoteku. Klase s međuspremnikom trebale bi se koristiti u vezi s drugim klasama toka.
  • 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
Važne metode klase BufferedOutputStream:
    void flush() : Ispire ovaj izlazni tok u međuspremniku. void write(byte[] b int off int len) : Zapisuje len bajtova iz navedenog niza bajtova počevši od pomaka u ovaj izlazni tok u međuspremniku. void write(int b) : Zapisuje navedeni bajt u ovaj izlazni tok u međuspremniku.
Izlaz:
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 
Povezani članci:
  • CharacterStream vs ByteStream
  • Klasa datoteke u Javi
  • Rukovanje datotekama u Javi pomoću FileWriter i FileReader
Napravi kviz