У даній статті розглянемо клас, який призначений для запису даних у файли - 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” виводимо вміст файлу в термінал):