English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать Java BufferedOutputStream и его методы с помощью примеров
Класс BufferedOutputStream из пакета java.io используется вместе с другими потоками вывода для более эффективной записи данных (в байтах)
Он наследует абстрактный класс OutputStream
BufferedOutputStream поддерживает8192 байтвнутреннего буфера.
Во время операции записи байты записываются в внутренний буфер, а не на диск. Как только буфер заполняется или поток закрывается, весь буфер записывается на диск
Таким образом, уменьшается количество коммуникаций с диском. Это именно поэтому запись байтов с использованием BufferedOutputStream происходит быстрее
Чтобы создать BufferedOutputStream,我们必须 сначала импортировать пакет java.io.BufferedOutputStream. После импорта пакета мы можем создать поток вывода
// Создание FileOutputStrean FileOutputStream file = new FileOutputStream(String path); //Создать BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file);
В предыдущем примере мы создали BufferedOutputStream с именем buffer, используя FileOutputStream с именем file
Здесь размер внутреннего буфера по умолчанию составляет 8192 байта. Однако, мы также можем определить размер внутреннего буфера
// Создает BufferedOutputStream с заданным размером внутреннего буфера BufferedOutputStream buffer = new BufferedOutputStream(file, int size);
Этот буфер поможет быстрее записывать байты в файл
Класс BufferedOutputStream предоставляет реализацию различных методов класса OutputStream
write() - Записывает один байт в внутренний буфер потока вывода
write(byte[] array) - Записывает байты из указанного массива в поток вывода
write(byte[] arr, int start, int length) - Записывает равное length байт из массива arr в поток вывода начиная с позиции start
import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main { public static void main(String[] args) { String data = "This is a line of text inside the file"; try { // Создание FileOutputStrean FileOutputStream file = new FileOutputStream("output.txt"); //Создать BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte[] array = data.getBytes(); //Записать данные в поток вывода output.write(array); output.close(); } catch (Exception e) { e.getStackTrace(); } } }
В примере выше мы создали буферный поток output и FileOutputStream. Поток вывода связан с файлом output.txt.
FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file);
Чтобы записать данные в файл, мы используем метод write().
Здесь, когда мы запускаем программу,output.txtФайл будет записан с содержимым.
This is a line of text inside the file.
Внимание:В программе используется метод getBytes() для преобразования строки в массив байтов.
Чтобы удалить внутренний буфер, мы можем использовать метод flush(). Этот метод принудительно записывает все данные из буфера в целевой файл. Например,
import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main { public static void main(String[] args) { String data = "This is a demo of the flush method"; try { // Создание FileOutputStrean FileOutputStream file = new FileOutputStream("flush.txt"); //Создать BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); //Записать данные в поток вывода buffer.write(data.getBytes()); //Протолкнуть данные в цель buffer.flush(); System.out.println("Данные проталкиваются в файл."); buffer.close(); } catch(Exception e) { e.getStackTrace(); } } }
Результат вывода
Данные проталкиваются в файл.
Когда мы запускаем программу, файл flush.txt наполняется текстом, представленным строковыми данными.
Чтобы закрыть буферированный поток ввода-вывода, мы можем использовать метод close(). После вызова этого метода мы не сможем использовать поток ввода-вывода для записи данных.