logo

FileOutputStream kullanarak dosya oluşturma

FileOutputStream sınıfı bayt akışına aittir ve verileri tek tek baytlar biçiminde saklar. Metin dosyaları oluşturmak için kullanılabilir. Dosya, verilerin sabit disk veya CD gibi ikinci bir depolama ortamında depolanmasını temsil eder. Bir dosyanın mevcut olup olmadığı veya oluşturulup oluşturulamayacağı, temel platforma bağlıdır. Özellikle bazı platformlar, bir dosyanın aynı anda yalnızca bir FileOutputStream (veya diğer dosya yazma nesneleri) tarafından yazılmak üzere açılmasına izin verir. Bu gibi durumlarda, ilgili dosya zaten açıksa bu sınıftaki yapıcılar başarısız olur. FileOutputStream, görüntü verileri gibi ham bayt akışlarını yazmak içindir. Karakter akışlarını yazmak için FileWriter'ı kullanmayı düşünün. Önemli yöntemler:
    geçersiz kapatma(): Bu dosya çıkış akışını kapatır ve bu akışla ilişkili tüm sistem kaynaklarını serbest bırakır. korumalı void finalize(): Dosyaya olan bağlantıyı temizler ve bu akışa daha fazla başvuru olmadığında bu dosya çıkış akışının kapatma yönteminin çağrılmasını sağlar. void write(bayt[] b): Belirtilen bayt dizisinden b.uzunluk baytlarını bu dosya çıkış akışına yazar. void write(byte[] b int off int len): Belirtilen bayt dizisinden len baytlarını bu dosya çıkış akışına ofsetten başlayarak yazar. geçersiz yazma(int b): Belirtilen baytı bu dosya çıkış akışına yazar.
Bazı karakterleri (veya metni) saklayan bir metin dosyası oluşturmak için aşağıdaki adımlar izlenmelidir:
    Veri okuma: 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 OutputStream'e veri gönder: 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);
    DataInputStream'den veri okuma: 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);
    Dosyayı kapatın:Son olarak herhangi bir dosya üzerinde giriş veya çıkış işlemleri yapıldıktan sonra kapatılmalıdır, aksi takdirde dosyanın verileri bozulabilir. Dosyanın kapatılması, ilgili akışların kapatılmasıyla yapılır. Örneğin fout.close(): FileOutputStream'i kapatacaktır, dolayısıyla dosyaya veri yazmanın bir yolu yoktur.
Uygulama: 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); 

BufferedOutputStream Kullanarak Verimliliği Artırma

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.
  • DataInputStream kullanılarak klavyeden belleğe veri okunduğunu ve 1 karakterin belleğe okunmasının 1 saniye sürdüğünü ve bu karakterin FileOutputStream tarafından 1 saniye daha harcanarak dosyaya yazıldığını varsayalım.
  • Yani bir dosyayı okumak ve yazmak 200 saniye sürecektir. Bu çok fazla zaman kaybıdır. Öte yandan, eğer Buffered sınıflanmışsa, ilk önce arabellekteki karakterlerle doldurulan ve bir kerede dosyaya yazılabilen bir arabellek sağlarlar. Tamponlu sınıflar diğer akış sınıflarıyla bağlantılı olarak kullanılmalıdır.
  • 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
BufferedOutputStream Sınıfının önemli yöntemleri:
    geçersiz yıkama(): Bu ara belleğe alınmış çıkış akışını temizler. void write(byte[] b int off int len): Belirtilen bayt dizisinden len baytlarını, ofset kapalı konumundan başlayarak bu arabelleğe alınmış çıkış akışına yazar. geçersiz yazma(int b): Belirtilen baytı bu arabelleğe alınmış çıkış akışına yazar.
Çıkış:
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 
İlgili Makaleler:
  • CharacterStream ve ByteStream karşılaştırması
  • Java'da Dosya Sınıfı
  • FileWriter ve FileReader kullanarak Java'da dosya işleme
Test Oluştur