logo

Skapa en fil med FileOutputStream

FileOutputStream-klassen tillhör byteström och lagrar data i form av individuella byte. Den kan användas för att skapa textfiler. En fil representerar lagring av data på ett andra lagringsmedium som en hårddisk eller CD. Huruvida en fil är tillgänglig eller inte kan skapas beror på den underliggande plattformen. Vissa plattformar tillåter i synnerhet att en fil öppnas för skrivning av endast ett FileOutputStream (eller andra filskrivande objekt) åt gången. I sådana situationer kommer konstruktörerna i den här klassen att misslyckas om den involverade filen redan är öppen. FileOutputStream är avsedd för att skriva strömmar av råbyte som bilddata. För att skriva strömmar av tecken överväg att använda FileWriter. Viktiga metoder:
    void close() : Stänger denna filutgångsström och släpper alla systemresurser som är associerade med denna ström. protected void finalize(): Rensar upp anslutningen till filen och säkerställer att stängningsmetoden för denna filutgångsström anropas när det inte finns fler referenser till denna ström. void write(byte[] b): Skriver b.length-bytes från den angivna byte-arrayen till denna filutgångsström. void write(byte[] b int off int len) : Skriver len-bytes från den angivna byte-matrisen med start vid offset off till denna filutgångsström. void write(int b): Skriver den angivna byten till denna filutgångsström.
Följande steg ska följas för att skapa en textfil som lagrar vissa tecken (eller text):
    Läser data: 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 Skicka data till 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);
    Läser data från 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);
    Stäng filen:Slutligen bör alla filer stängas efter att ha utfört inmatnings- eller utmatningsoperationer på den, annars kan filens data skadas. Stängning av filen görs genom att stänga tillhörande strömmar. Till exempel fout.close(): kommer att stänga FileOutputStream så det finns inget sätt att skriva data till filen.
Genomförande: 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); 

Förbättra effektiviteten med 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.
  • Låt oss anta att data läses från tangentbordet till minnet med DataInputStream och att det tar 1 sek att läsa 1 tecken i minnet och detta tecken skrivs in i filen av FileOutputStream genom att spendera ytterligare 1 sek.
  • Så att läsa och skriva en fil tar 200 sek. Det här är att slösa mycket tid. Å andra sidan om Buffered classed används tillhandahåller de en buffert som först fylls med tecken från bufferten som på en gång kan skrivas in i filen. Buffertade klasser ska användas i anslutning till andra streamklasser.
  • 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
Viktiga metoder för BufferedOutputStream Class:
    void flush() : Spolar denna buffrade utström. void write(byte[] b int off int len) : Skriver len-byte från den angivna byte-matrisen med start vid offset off till denna buffrade utström. void write(int b): Skriver den angivna byten till denna buffrade utström.
Produktion:
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 
Relaterade artiklar:
  • CharacterStream vs ByteStream
  • Filklass i Java
  • Filhantering i Java med FileWriter och FileReader
Skapa frågesport