logo

Erstellen einer Datei mit FileOutputStream

Die FileOutputStream-Klasse gehört zum Byte-Stream und speichert die Daten in Form einzelner Bytes. Es kann zum Erstellen von Textdateien verwendet werden. Eine Datei stellt die Speicherung von Daten auf einem zweiten Speichermedium wie einer Festplatte oder CD dar. Ob eine Datei verfügbar ist oder erstellt werden kann, hängt von der zugrunde liegenden Plattform ab. Insbesondere auf einigen Plattformen kann eine Datei jeweils nur von einem FileOutputStream (oder anderen Dateischreibobjekten) zum Schreiben geöffnet werden. In solchen Situationen schlagen die Konstruktoren dieser Klasse fehl, wenn die betreffende Datei bereits geöffnet ist. FileOutputStream ist zum Schreiben von Streams von Rohbytes wie Bilddaten gedacht. Zum Schreiben von Zeichenströmen sollten Sie FileWriter verwenden. Wichtige Methoden:
    void close() : Schließt diesen Dateiausgabestream und gibt alle mit diesem Stream verknüpften Systemressourcen frei. protected void finalize() : Bereinigt die Verbindung zur Datei und stellt sicher, dass die Close-Methode dieses Dateiausgabestreams aufgerufen wird, wenn keine weiteren Verweise auf diesen Stream vorhanden sind. void write(byte[] b): Schreibt b.length-Bytes aus dem angegebenen Byte-Array in diesen Dateiausgabestream. void write(byte[] b int off int len): Schreibt len ​​Bytes aus dem angegebenen Byte-Array, beginnend beim Offset, in diesen Dateiausgabestream. void write(int b) : Schreibt das angegebene Byte in diesen Dateiausgabestream.
Um eine Textdatei zu erstellen, in der einige Zeichen (oder Text) gespeichert sind, müssen die folgenden Schritte befolgt werden:
    Daten lesen: 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 Daten an OutputStream senden: 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);
    Daten aus DataInputStream lesen: 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);
    Schließen Sie die Datei:Schließlich sollte jede Datei geschlossen werden, nachdem Ein- oder Ausgabevorgänge ausgeführt wurden, da andernfalls die Daten beschädigt werden könnten. Das Schließen der Datei erfolgt durch Schließen der zugehörigen Streams. Zum Beispiel schließt fout.close(): den FileOutputStream, daher gibt es keine Möglichkeit, Daten in die Datei zu schreiben.
Durchführung: 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); 

Verbesserung der Effizienz mit 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.
  • Nehmen wir an, dass Daten mithilfe von DataInputStream von der Tastatur in den Speicher eingelesen werden und es 1 Sekunde dauert, ein Zeichen in den Speicher einzulesen. Dieses Zeichen wird von FileOutputStream nach einer weiteren Sekunde in die Datei geschrieben.
  • Das Lesen und Schreiben einer Datei dauert also 200 Sekunden. Das ist eine große Zeitverschwendung. Wenn andererseits die Klasse „Buffered“ verwendet wird, stellen sie einen Puffer bereit, der zunächst mit Zeichen aus dem Puffer gefüllt wird, die sofort in die Datei geschrieben werden können. Gepufferte Klassen sollten in Verbindung mit anderen Stream-Klassen verwendet werden.
  • 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
Wichtige Methoden der BufferedOutputStream-Klasse:
    void flush() : Leert diesen gepufferten Ausgabestream. void write(byte[] b int off int len): Schreibt len ​​Bytes aus dem angegebenen Byte-Array beginnend bei Offset Off in diesen gepufferten Ausgabestream. void write(int b) : Schreibt das angegebene Byte in diesen gepufferten Ausgabestream.
Ausgabe:
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 
Verwandte Artikel:
  • CharacterStream vs. ByteStream
  • Dateiklasse in Java
  • Dateiverwaltung in Java mit FileWriter und FileReader
Quiz erstellen