国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java I/O 概述

2019-11-06 07:18:33
字體:
來源:轉載
供稿:網友

I/O

?? I/O 是 input 和 output 的簡寫,java API 中,可以讀入字節或字符序列的對象稱為輸入流,可以寫入字節或字符序列的對象稱為輸出流。其來源地和目的地可以是文件,也可以是 socket、http、數組甚至是兩個線程之間。

?? I/O 包下有幾十個類文件,大概分為以下幾種:

InputStreamOutputStreamReaderWriter為代表的 I/O 類 與文件系統相關的淚,例如FileFileFilterRandomaccessFile等序列化相關的類 其他,例如工具類、異常類

流家族

InputStreamOutputStream中繼承的類是用來處理字節流。從ReaderWriter繼承的類是用來處理 Unicode 字符,這些類的讀寫操作都是基于 Unicode 碼元的。通過InputStreamReaderOutputStreamWriter可以將字節流轉為字符流。

流家族體系 流家族 上圖中,紅色的類表示已被棄用。

字節流

InputStream

InputStream有幾個常用的方法 : * mark : mark方法用于標記當前讀取的位置,與reset方法配合使用。 * reset : 返回mark標記的位置,重新從該位置讀取字節 * markSupported : 是否支持 mark/reset * available : 剩余未讀取的字節數 * skip : 跳過并丟棄指定的字節數 * read : 讀取字節

markSupported skip? 說明
ByteArrayInputStream 支持 支持 輸入源,將byte[]作為輸入源的類
FileInputStream 支持 支持 輸入源,將文件作為輸入源的類
PipedInputStream 不支持 支持 輸入源,用于進程間通信,與PipedOutputStream配合使用
SequenceInputStream 不支持 支持 將多個輸入源合并成一個輸入源,available方法只返回當前輸入源的available

FilterInputStream

繼承自FilterInputStream子類是裝飾器類,它們不能自己產生字節序列,需要配合輸入源才能使用,它們的主要作用是增加輸入流的功能。在別的編程語言里,諸如緩沖機制和預覽等細節都是自動處理的,相對而言,Java 就比較麻煩,必須配合裝飾器類才能實現。但是這種方式帶來極大的靈活性。

markSupported skip? 說明
BufferedInputStream 支持 支持 給輸入流增加緩沖機制
PushbackInputStream 不支持 支持 給輸入流增加推回功能,即將讀取的字節推回到緩沖區
DataInputStream 不支持 支持 允許應用程序以與機器無關方式從底層輸入流中讀取基本 Java 數據類型,一般與DataOutputStream配合使用,另外DataInputStream讀取時采用的 Java 版的 UTF-8 編碼,與標準 UTF-8 不同。所以DataInputStream讀取的字節流必須時通過DataOutputStream寫入的,不然會出問題

OutputStream

OutputStream有幾種常用的方法:

說明
ByteArrayOutputStream 將輸出流轉化為byte[]
FileOutputStream 文件輸出流
PipedOutputStream 管道輸出流,與PipedOutputStream配合使用

FilterOutputStream

類似于FilterInputStreamFilterOutputStream也是裝飾器類的基類。

說明
BufferedOutputStream 給輸出流增加緩沖機制
PRintStream 打印輸出流可直接輸出至文件 (里面封裝了FileOutputStream)自動刷新功能,遇到/n或者寫入一個byte數組之后自動調用flush方法可方便打印各種數據值表示形式與其他輸出流不同,它產生的IOException異常會被自身函數捕獲,可以通過checkError檢查是否發生過異常通過format方法,支持格式化輸出打印的字符使用平臺默認字符編碼轉換為字節,也可以指定編碼類型null值會被轉為null字符,布爾類型會被轉為truefalse字符
DataOutputStream 允許應用程序以與機器無關方式寫入基本 Java 數據類型,配合DataInputStream使用。

ObjectOutput 和 ObjectInput

ObjectInputStreamObjectOutputStream用于對象的序列化,可以將任何 Java 類型包括對象,序列化成字節序列。

字符流

Reader

Reader用于讀取字符流的抽象類,使用字符流讀取文件,比字節流更高效。可通過InputStreamReader將字節流轉換為字符流。

markSupported skip? 說明
CharArrayReader 支持 支持 輸入源,將char[]作為輸入源的類
StringReader 支持 支持 輸入源,將String作為輸入源的類
PipedReader 不支持 支持 類似PipedInputStream
FileReader 不支持 支持 類似FileInputStream,實際上就是在FileInputStream外面套了InputStreamReader
InputStreamReader 不支持 支持 將字節流轉為字符流,可以指定字符編碼
BufferedReader 支持 支持 類似于BufferedInputStream,帶有緩沖機制的字符流,需要提供輸入源
PushbackReader 不支持 支持 類似PushbackInputStream

Writer

說明
CharArrayWriter 將輸出流轉為char[]null值被轉為null字符串
StringWriter 將輸出流轉為Stringnull值被轉為null字符串
PipedWriter 類似PipedOutputStream
PrintWriter 類似PrintStream
OutStreamWriter 將字節流轉為字符流,可以指定字符編碼
BufferedWriter 類似于BufferedOutputStream,帶有緩沖機制的字符流,需要提供輸入源

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙里县| 成武县| 沙雅县| 繁昌县| 天峨县| 吴堡县| 怀柔区| 塔城市| 商水县| 定远县| 合川市| 尚义县| 当涂县| 洪洞县| 兰考县| 横峰县| 万年县| 砚山县| 陆丰市| 万载县| 平和县| 土默特左旗| 文水县| 荆州市| 宁晋县| 伊川县| 永兴县| 易门县| 芒康县| 咸阳市| 贵南县| 准格尔旗| 邹平县| 休宁县| 同心县| 陆良县| 牙克石市| 沁阳市| 万源市| 碌曲县| 杭锦后旗|