logo

Opprette en fil ved hjelp av FileOutputStream

FileOutputStream-klassen tilhører bytestrømmen og lagrer dataene i form av individuelle byte. Den kan brukes til å lage tekstfiler. En fil representerer lagring av data på et andre lagringsmedium som en harddisk eller CD. Hvorvidt en fil er tilgjengelig eller kan opprettes, avhenger av den underliggende plattformen. Spesielt noen plattformer lar en fil åpnes for skriving av bare ett FileOutputStream (eller andre filskrivende objekter) om gangen. I slike situasjoner vil konstruktørene i denne klassen mislykkes hvis den involverte filen allerede er åpen. FileOutputStream er ment for å skrive strømmer av råbyte som bildedata. For å skrive strømmer av tegn bør du vurdere å bruke FileWriter. Viktige metoder:
    void close() : Lukker denne filutdatastrømmen og frigjør eventuelle systemressurser knyttet til denne strømmen. beskyttet void finalize(): Rydder opp i forbindelsen til filen og sørger for at lukkemetoden for denne filutdatastrømmen kalles når det ikke er flere referanser til denne strømmen. void skrive(byte[] b): Skriver b.length-bytes fra den angitte byte-arrayen til denne filutdatastrømmen. void write(byte[] b int off int len): Skriver len-byte fra den spesifiserte byte-matrisen som starter med offset off til denne filutdatastrømmen. void skrive(int b): Skriver den angitte byten til denne filutdatastrømmen.
Følgende trinn skal følges for å lage en tekstfil som lagrer noen tegn (eller tekst):
    Lese 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 Send data til 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);
    Leser data fra 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);
    Lukk filen:Til slutt bør enhver fil lukkes etter å ha utført inn- eller utdataoperasjoner på den, ellers kan dataene til filen bli ødelagt. Lukking av filen gjøres ved å lukke de tilhørende strømmene. For eksempel fout.close(): vil lukke FileOutputStream, så det er ingen måte å skrive data inn i filen.
Implementering: 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); 

Forbedrer effektiviteten ved å bruke 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.
  • La oss anta at data leses fra tastaturet til minnet ved hjelp av DataInputStream og at det tar 1 sek å lese 1 tegn inn i minnet, og dette tegnet skrives inn i filen av FileOutputStream ved å bruke ytterligere 1 sek.
  • Så for å lese og skrive en fil vil det ta 200 sek. Dette er å kaste bort mye tid. På den annen side, hvis Buffered classed brukes, gir de en buffer som først fylles med tegn fra bufferen som kan skrives inn i filen med en gang. Bufret klasser bør brukes i forbindelse med andre stream klasser.
  • 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
Viktige metoder for BufferedOutputStream Class:
    void flush(): Tømmer denne bufrede utgangsstrømmen. void write(byte[] b int off int len): Skriver len-byte fra den spesifiserte byte-matrisen starter med offset off til denne bufrede utdatastrømmen. void skrive(int b): Skriver den spesifiserte byten til denne bufrede utdatastrømmen.
Produksjon:
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 
Relaterte artikler:
  • CharacterStream vs ByteStream
  • Filklasse i Java
  • Filhåndtering i Java ved hjelp av FileWriter og FileReader
Lag quiz