logo

Створення файлу за допомогою FileOutputStream

Клас FileOutputStream належить до потоку байтів і зберігає дані у вигляді окремих байтів. Його можна використовувати для створення текстових файлів. Файл являє собою зберігання даних на другому носії інформації, такому як жорсткий диск або компакт-диск. Доступність файлу чи можливість його створення залежить від базової платформи. Деякі платформи, зокрема, дозволяють відкривати файл для запису лише одним FileOutputStream (або іншим об’єктом запису файлів) одночасно. У таких ситуаціях конструктори в цьому класі зазнають збою, якщо відповідний файл уже відкрито. FileOutputStream призначений для запису потоків необроблених байтів, таких як дані зображення. Для запису потоків символів розгляньте використання FileWriter. Важливі методи:
    void close() : Закриває вихідний потік файлу та звільняє всі системні ресурси, пов’язані з цим потоком. захищений void finalize() : Очищає підключення до файлу та гарантує, що метод close цього потоку виводу файлу викликається, коли більше немає посилань на цей потік. void write(byte[] b) : Записує байти b.length із указаного масиву байтів у вихідний потік цього файлу. void write(byte[] b int off int len) : Записує len байтів із указаного масиву байтів, починаючи зі зсуву off, у вихідний потік цього файлу. void write(int b) : Записує вказаний байт у вихідний потік цього файлу.
Щоб створити текстовий файл, який зберігає деякі символи (або текст), необхідно виконати наступні кроки:
    Читання даних: 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: 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: 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);
    Закрийте файл:Зрештою, будь-який файл слід закрити після виконання над ним операцій введення або виведення, інакше дані можуть бути пошкоджені. Закриття файлу здійснюється шляхом закриття пов’язаних потоків. Наприклад, fout.close(): закриє FileOutputStream, тому немає можливості записати дані у файл.
Реалізація: 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

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, і потрібна 1 секунда, щоб зчитати 1 символ у пам’ять, і цей символ записується у файл FileOutputStream, витрачаючи ще 1 секунду.
  • Таким чином, для читання і запису файлу знадобиться 200 секунд. Це втрачає багато часу. З іншого боку, якщо використовуються класи Buffered, вони надають буфер, який спочатку заповнюється символами з буфера, які можна відразу записати у файл. Буферизовані класи слід використовувати разом з іншими потоковими класами.
  • 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:
    void flush() : Очищає цей буферизований вихідний потік. void write(byte[] b int off int len) : Записує len байтів із зазначеного масиву байтів, починаючи зі зсуву off, до цього буферизованого вихідного потоку. void write(int b) : Записує вказаний байт у цей буферизований вихідний потік.
Вихід:
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 
Схожі статті:
  • CharacterStream проти ByteStream
  • Клас файлу в Java
  • Обробка файлів у Java за допомогою FileWriter і FileReader
Створіть вікторину