Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java BufferedOutputStream 類

在本教程中,我們將借助示例學(xué)習(xí)Java BufferedOutputStream及其方法。

java.io包的BufferedOutputStream類與其他輸出流一起使用,以更有效地寫入數(shù)據(jù)(以字節(jié)為單位)。

它繼承了OutputStream抽象類。

BufferedOutputStream類是Java OutputStream的子類。

BufferedOutputStream的工作

BufferedOutputStream維護(hù)一個8192字節(jié)的內(nèi)部緩沖區(qū)。

在寫操作期間,字節(jié)被寫入內(nèi)部緩沖區(qū)而不是磁盤。 一旦緩沖區(qū)被填充或流關(guān)閉,整個緩沖區(qū)將被寫入磁盤。

因此,減少了與磁盤的通信次數(shù)。這就是為什么使用BufferedOutputStream寫入字節(jié)更快的原因。

創(chuàng)建一個BufferedOutputStream

為了創(chuàng)建一個BufferedOutputStream,我們必須首先導(dǎo)入java.io.BufferedOutputStream包。導(dǎo)入包后,就可以創(chuàng)建輸出流了。

//創(chuàng)建一個FileOutputStream
FileOutputStream file = new FileOutputStream(String path);

//創(chuàng)建一個BufferedOutputStream
BufferedOutputStream buffer = new BufferOutputStream(file);

在上面的示例中,我們創(chuàng)建了一個名為buffer的BufferdOutputStream,并使用名為file的FileOutputStream。

在此,內(nèi)部緩沖區(qū)的默認(rèn)大小為8192字節(jié)。但是,我們也可以指定內(nèi)部緩沖區(qū)的大小。

//創(chuàng)建一個具有指定大小的內(nèi)部緩沖區(qū)的BufferedOutputStream
BufferedOutputStream buffer = new BufferOutputStream(file, int size);

這buffer將有助于更快地將字節(jié)寫入文件。

BufferedOutputStream的方法

BufferedOutputStream類為OutputStream類中的不同方法提供了實現(xiàn)。

write()方法

  • write() - 將單個字節(jié)寫入輸出流的內(nèi)部緩沖區(qū)

  • write(byte[] array) - 將指定數(shù)組中的字節(jié)寫入輸出流

  • write(byte[] arr, int start, int length)- 從位置start開始將等于length的字節(jié)數(shù)寫入數(shù)組的輸出流

示例:BufferedOutputStream將數(shù)據(jù)寫入文件

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 {
            //創(chuàng)建一個FileOutputStream
            FileOutputStream file = new FileOutputStream("output.txt");

            //創(chuàng)建一個BufferedOutputStream
            BufferedOutputStream output = new BufferedOutputStream(file);

            byte[] array = data.getBytes();

            //將數(shù)據(jù)寫入輸出流
            output.write(array);
            output.close();
        }

        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

在上面的示例中,我們創(chuàng)建了一個名為output的緩沖輸出流以及FileOutputStream。輸出流與文件output.txt鏈接。

FileOutputStream file = new FileOutputStream("output.txt");
BufferedOutputStream output = new BufferedOutputStream(file);

要將數(shù)據(jù)寫入文件,我們使用了write()方法。

在這里,當(dāng)我們運行程序時,output.txt文件將寫入以下內(nèi)容。

This is a line of text inside the file.

注意:程序中使用getBytes()方法將字符串轉(zhuǎn)換為字節(jié)數(shù)組。

flush()方法

要清除內(nèi)部緩沖區(qū),我們可以使用flush()方法。此方法強制輸出流將緩沖區(qū)中存在的所有數(shù)據(jù)寫入目標(biāo)文件。例如,

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 {
            //創(chuàng)建一個FileOutputStream
            FileOutputStream file = new FileOutputStream("flush.txt");

            //創(chuàng)建一個BufferedOutputStream
            BufferedOutputStream buffer = new BufferedOutputStream(file);

            //將數(shù)據(jù)寫入輸出流
            buffer.write(data.getBytes());

            //將數(shù)據(jù)推入到目標(biāo)
            buffer.flush();
            System.out.println("數(shù)據(jù)被推入到文件中。");
            buffer.close();
        }

        catch(Exception e) {
            e.getStackTrace();
        }
    }
}

輸出結(jié)果

數(shù)據(jù)被推入到文件中。

當(dāng)我們運行程序時,文件flush.txt填充了由字符串?dāng)?shù)據(jù)表示的文本。

close()方法

要關(guān)閉緩沖的輸出流,我們可以使用close()方法。調(diào)用該方法后,我們將無法使用輸出流寫入數(shù)據(jù)。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清