logo

Een bestand maken met FileOutputStream

De FileOutputStream-klasse behoort tot de bytestream en slaat de gegevens op in de vorm van individuele bytes. Het kan worden gebruikt om tekstbestanden te maken. Een bestand vertegenwoordigt de opslag van gegevens op een tweede opslagmedium zoals een harde schijf of cd. Of een bestand beschikbaar is of aangemaakt kan worden, hangt af van het onderliggende platform. Met name op sommige platforms kan een bestand door slechts één FileOutputStream (of andere objecten voor het schrijven van bestanden) tegelijk worden geopend om te worden geschreven. In dergelijke situaties zullen de constructors in deze klasse falen als het betreffende bestand al geopend is. FileOutputStream is bedoeld voor het schrijven van stromen onbewerkte bytes, zoals afbeeldingsgegevens. Overweeg het gebruik van FileWriter voor het schrijven van tekenstromen. Belangrijke methoden:
    leegte close() : Sluit deze bestandsuitvoerstroom en geeft alle systeembronnen vrij die aan deze stroom zijn gekoppeld. beschermde leegte finalize() : Ruimt de verbinding met het bestand op en zorgt ervoor dat de sluitmethode van deze bestandsuitvoerstroom wordt aangeroepen wanneer er geen verwijzingen meer naar deze stroom zijn. void write(byte[] b) : Schrijft b.length-bytes van de opgegeven byte-array naar deze bestandsuitvoerstroom. void write(byte[] b int uit int len) : Schrijft len ​​bytes uit de opgegeven byte-array, beginnend bij offset off, naar deze bestandsuitvoerstroom. ongeldig schrijven(int b): Schrijft de opgegeven byte naar deze bestandsuitvoerstroom.
De volgende stappen moeten worden gevolgd om een ​​tekstbestand te maken waarin enkele tekens (of tekst) worden opgeslagen:
    Gegevens lezen: 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 Gegevens naar OutputStream verzenden: 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);
    Gegevens uit DataInputStream lezen: 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);
    Sluit het bestand:Ten slotte moet elk bestand worden gesloten nadat er invoer- of uitvoerbewerkingen op zijn uitgevoerd, anders kunnen de gegevens van het bestand beschadigd raken. Het sluiten van het bestand gebeurt door het sluiten van de bijbehorende streams. Bijvoorbeeld fout.close(): sluit de FileOutputStream en daarom is er geen manier om gegevens naar het bestand te schrijven.
Uitvoering: 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); 

Verbetering van de efficiëntie met behulp van 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.
  • Laten we aannemen dat gegevens vanaf het toetsenbord in het geheugen worden gelezen met behulp van DataInputStream en dat het 1 seconde duurt om 1 teken in het geheugen te lezen en dat dit teken door FileOutputStream in het bestand wordt geschreven door nog eens 1 seconde te besteden.
  • Het lezen en schrijven van een bestand duurt dus 200 sec. Dit kost veel tijd. Aan de andere kant, als Buffered Classed wordt gebruikt, bieden ze een buffer die eerst wordt gevuld met tekens uit de buffer die onmiddellijk in het bestand kunnen worden geschreven. Gebufferde klassen moeten worden gebruikt in combinatie met andere streamklassen.
  • 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
Belangrijke methoden van BufferedOutputStream Class:
    leegte flush() : Spoelt deze gebufferde uitvoerstroom door. void write(byte[] b int uit int len) : Schrijft len ​​bytes uit de opgegeven byte-array, beginnend bij offset off, naar deze gebufferde uitvoerstroom. ongeldig schrijven(int b): Schrijft de opgegeven byte naar deze gebufferde uitvoerstroom.
Uitgang:
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 
Gerelateerde artikelen:
  • CharacterStream versus ByteStream
  • Bestandsklasse in Java
  • Bestandsverwerking in Java met behulp van FileWriter en FileReader
Quiz maken