成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java? 教程(字節(jié)流)

Cristic / 2881人閱讀

字節(jié)流

程序使用字節(jié)流來執(zhí)行8位字節(jié)的輸入和輸出,所有的字節(jié)流類都是從InputStream和OutputStream派生出來的。

有許多字節(jié)流類,為了演示字節(jié)流的工作原理,我們將重點關(guān)注文件I/O字節(jié)流,F(xiàn)ileInputStream和FileOutputStream,其他類型的字節(jié)流以大致相同的方式使用,它們的不同之處主要在于它們的構(gòu)造方式。

使用字節(jié)流

我們將通過檢查名為CopyBytes的示例程序來探索FileInputStreamFileOutputStream,該程序使用字節(jié)流來復(fù)制xanadu.txt,一次一個字節(jié)。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyBytes {
    public static void main(String[] args) throws IOException {

        FileInputStream in = null;
        FileOutputStream out = null;

        try {
            in = new FileInputStream("xanadu.txt");
            out = new FileOutputStream("outagain.txt");
            int c;

            while ((c = in.read()) != -1) {
                out.write(c);
            }
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    }
}

CopyBytes將大部分時間花在一個簡單的循環(huán)中,該循環(huán)讀取輸入流和寫入輸出流,一次一個字節(jié),如下圖所示。

始終關(guān)閉流

在不再需要流時關(guān)閉流非常重要 — 非常重要的是CopyBytes使用finally塊來保證即使發(fā)生錯誤也會關(guān)閉兩個流,這種做法有助于避免嚴重的資源泄漏。

一個可能的錯誤是CopyBytes無法打開一個或兩個文件,發(fā)生這種情況時,對應(yīng)于該文件的流變量永遠不會從其初始null值更改,這就是為什么CopyBytes在調(diào)用close之前確保每個流變量都包含一個對象引用。

何時不使用字節(jié)流

CopyBytes看起來像一個普通的程序,但它實際上代表了一種你應(yīng)該避免的低級別I/O,由于xanadu.txt包含字符數(shù)據(jù),因此最好的方法是使用字符流,如下一節(jié)中所述。還有用于更復(fù)雜數(shù)據(jù)類型的流,字節(jié)流應(yīng)僅用于最原始的I/O。

那么為什么要談?wù)撟止?jié)流呢?因為所有其他流類型都是基于字節(jié)流構(gòu)建的。

上一篇:I/O流 下一篇:字符流

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72970.html

相關(guān)文章

  • Java? 教程符流)

    字符流 Java平臺使用Unicode約定存儲字符值,字符流I/O自動將此內(nèi)部格式與本地字符集進行轉(zhuǎn)換,在Western語言環(huán)境中,本地字符集通常是ASCII的8位超集。 對于大多數(shù)應(yīng)用程序,具有字符流的I/O并不比具有字節(jié)流的I/O復(fù)雜,使用流類完成的輸入和輸出會自動轉(zhuǎn)換為本地字符集和從本地字符集轉(zhuǎn)換,使用字符流代替字節(jié)流的程序會自動適應(yīng)本地字符集并為國際化做了準備 — 所有這些都無需程序員的額...

    mochixuan 評論0 收藏0
  • Java? 教程(數(shù)據(jù)流)

    數(shù)據(jù)流 數(shù)據(jù)流支持原始數(shù)據(jù)類型值(boolean、char、byte、short、int、long、float和double)以及String值的二進制I/O,所有數(shù)據(jù)流都實現(xiàn)DataInput接口或DataOutput接口,本節(jié)重點介紹這些接口最廣泛使用的實現(xiàn),DataInputStream和DataOutputStream。 DataStreams示例通過寫出一組數(shù)據(jù)記錄,然后再次讀取它們來演...

    wujl596 評論0 收藏0
  • Java? 教程(命令行I/O)

    命令行I/O 程序通常從命令行運行,并在命令行環(huán)境中與用戶交互,Java平臺以兩種方式支持這種交互:通過標準流和控制臺。 標準流 標準流是許多操作系統(tǒng)的一個特性,默認情況下,它們從鍵盤讀取輸入并將輸出寫入顯示器,它們還支持文件和程序之間的I/O,但該功能由命令行解釋器控制,而不是程序。 Java平臺支持三種標準流:標準輸入,可通過System.in訪問;標準輸出,可通過System.out訪問;和...

    jeyhan 評論0 收藏0
  • 高薪程序員&面試題精講系列22之說說Java的IO流,常用哪些IO流?

    摘要:一面試題及剖析今日面試題今天壹哥帶各位復(fù)習(xí)一塊可能會令初學(xué)者比較頭疼的內(nèi)容,起碼當時讓我很有些頭疼的內(nèi)容,那就是流。在這里壹哥會從兩部分展開介紹流,即與流。除此之外盡量使用字節(jié)流。關(guān)閉此輸入流并釋放與流相關(guān)聯(lián)的任何系統(tǒng)資源。 一. 面試題及剖析 1. 今日面試題 今天 壹哥 帶各位復(fù)習(xí)一塊可...

    fnngj 評論0 收藏0
  • Java? 教程(I/O流)

    I/O流 I/O流表示輸入源或輸出目標,流可以表示許多不同類型的源和目標,包括磁盤文件、設(shè)備、其他程序和內(nèi)存數(shù)組。 流支持許多不同類型的數(shù)據(jù),包括簡單字節(jié)、原始數(shù)據(jù)類型、本地化字符和對象,有些流只是傳遞數(shù)據(jù),其他人以有用的方式操縱和轉(zhuǎn)換數(shù)據(jù)。 無論它們?nèi)绾卧趦?nèi)部工作,所有流都為使用它們的程序提供相同的簡單模型:流是一系列數(shù)據(jù),程序使用輸入流從源讀取數(shù)據(jù),一次一個條目: showImg(https:...

    JerryWangSAP 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<