У даній статті розглянемо клас, який призначений для запису даних у файли - FileOutputStream. Файловий потік виводу, являється потоком виводу для запису даних у File або у FileDescriptor. Доступність файлу або можливість його створення визначається платформою. Деякі платформи, дозволяють, щоб файл був відкритим для запису тільки одним примірником FileOutputStream (або іншим об'єктом, який підтримує запис у файли). У таких ситуаціях конструктори цього класу завершують своє виконання з помилкою, яка позначить зайнятість файлу. Клас FileOutputStream в більшості призначений для запису потоків “сирих” байтів, на подобі даних файлу зображення. Для запису потоків символів, використовуйте клас FileWriter.

Конструктори

FileOutputStream(File file)
Створює потік виводу для запису у файл, який представляє переданий об'єкт File.
FileOutputStream(File file, boolean append)
Створює потік виводу для запису у файл, який представляє переданий об'єкт File.
FileOutputStream(FileDescriptor fdObj)
Створює потік виводу для запису у вказаний файловий дескриптор, який представляє існуюче підключення до певного файлу у файловій системі.
FileOutputStream(String name)
Створює потік виводу для запису у файл, який представляє вказаний рядок символів.
FileOutputStream(String name, boolean append)
Створює потік виводу для запису у файл, який представляє вказаний рядок символів. Якщо параметр append має значення true — запис виконується у кінець файлу.

Методи

void close()
Закриває поточний файловий потік виводу і вивільняє будь-які системні ресурси, асоційовані з поточним потоком.
protected void finalize()
Очищає підключення до файлу і запевняє, що метод close цього потоку виводу викликається коли не будуть існувати посилання на цей потік.
FileChannel getChannel()
Повертає унікальний об'єкт FileChannel, який асоційований з поточним потоком виводу.
FileDescriptor getFD()
Повертає файловий дескриптор, який асоційований з поточним потоком.
void write(byte[] b)
Записує b.length байтів з вказаного масиву у поточний потік виводу.
void write(byte[] b, int off, int len)
Записує len байтів з вказаного масиву, розпочинаючи з позиції offset у поточний файловий потік.
void write(int b)
Записує вказаний байт у поточний файловий потік.

Приклад

Розлянемо простий приклад запису даних, у вигляді ascii символів у файл.
import java.io.* ;
import java.nio.file.* ;
import java.net.URI ; /* об'єкт URI */

class MainClass
{
  public static void main (String[] opts)
  {
    /* шлях до потрібного файлу */
    File path = new File ("ascii_file.txt") ;
    /* дані, які будуть записуватись у файл */
    byte[] data = new byte [] {'a', 's', 'c', 'i', 'i'} ;
    
    try
    {
      /* створюєм новмй об'єкт */
      FileOutputStream fstream = new FileOutputStream (path) ;
      
      /* записуємо дані у файл  */
      fstream.write (data) ;
    }
    /* перехоплюємо помилки */
    catch (FileNotFoundException e)
    {
      System.out.println ("Помилка " + e) ; 
    }
    catch (IOException e)
    {
      System.out.println ("Помилка " + e) ;
    }
  }
}
Після компілювання і виконання даного коду в терміналі можна побачити наступний результат (код міститься у файлі “MainClass.java”, за допомогою команди “more” виводимо вміст файлу в термінал): Java_FileOutputStream_sample_output_terminal