В този урок ще научим за Java BufferedOutputStream и неговите методи с помощта на примери.
В BufferedOutputStream
класа на java.io
опаковката се използва с други изходни потоци, за да напишете данните (в байтове) по-ефективно.
Той разширява OutputStream
абстрактния клас.
Работа на BufferedOutputStream
В BufferedOutputStream
поддържа вътрешна буфер на 8192 байта .
По време на операцията за запис байтовете се записват във вътрешния буфер вместо на диска. След като буферът се запълни или потокът се затвори, целият буфер се записва на диска.
Следователно броят на комуникацията към диска е намален. Ето защо писането на байтове се използва по-бързо BufferedOutputStream
.
Създайте BufferedOutputStream
За да създадем BufferedOutputStream
, първо трябва да импортираме java.io.BufferedOutputStream
пакета. След като импортираме пакета тук е как можем да създадем изходния поток.
// Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file);
В горния пример създадохме BufferdOutputStream
поименен буфер с FileOutputStream
посочения файл.
Тук вътрешният буфер има размер по подразбиране от 8192 байта. Можем обаче да посочим и размера на вътрешния буфер.
// Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size);
Буферът ще помогне за по-бързо записване на байтове във файлове.
Методи на BufferedOutputStream
В BufferedOutputStream
клас осигурява приложения за различни методи в OutputStream
класа.
метод write ()
write()
- записва един байт във вътрешния буфер на изходния потокwrite(byte() array)
- записва байтовете от посочения масив в изходния потокwrite(byte() arr, int start, int length)
- записва броя на байтовете, равен на дължината, в изходния поток от масив, започвайки от началото на позицията
Пример: BufferedOutputStream за запис на данни във файл
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 ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates a BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte() array = data.getBytes(); // Writes data to the output stream 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 () Метод
За да изчистим вътрешния буфер, можем да използваме 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 ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(" flush.txt"); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); // Writes data to the output stream buffer.write(data.getBytes()); // Flushes data to the destination buffer.flush(); System.out.println("Data is flushed to the file."); buffer.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Изход
Данните се изтриват във файла.
Когато стартираме програмата, файлът flush.txt се запълва с текста, представен от данните за низа.
метод close ()
За да затворим буферирания изходен поток, можем да използваме close()
метода. След като методът бъде извикан, не можем да използваме изходния поток за запис на данните.
За да научите повече, посетете Java BufferedOutputStream (официална документация за Java).