1. 程式人生 > >[讀書]java I/O流的介紹

[讀書]java I/O流的介紹

英文不好,拿來做閱讀練習。。。。一步一步,有些地方可能表達有問題,見諒。

Overview of I/O Streams

i/o流的概述

To bring in information, a program opens a stream on an information source (a file, memory, a socket) and reads the information sequentially, as shown here:

為了獲取資訊,程式在資訊源(檔案,記憶體,socket)之間建立了一個流,然後按順序讀取資訊,如下圖所示:

!sequentially 這裡怎麼翻譯不是很明白。


Similarly, a program can send information to an external destination by opening a stream to a destination and writing the information out sequentially, like this:

相似的過程,程式通過和外部的資訊送達目標建立起一個流,然後把資訊傳送到目標,按順序寫出,像如下圖一樣:


No matter where the data is coming from or going to and no matter what its type, the algorithms for sequentially reading and writing data are basically the same:

無論資料從哪裡來或者到哪裡,也不管資料在那種介質中,按序讀寫資料的演算法基本是相同的:

Reading

Writing

open a stream

while more information

read information

close the stream

open a stream

while more information

write information

close the stream

開啟一個流

當有更多的資料資訊時

讀資訊

關閉流

開啟一個流

當有更多資訊時候

寫入資訊

關閉流

Java.io包中包含了一系列流的類,這些類支援讀寫操作的演算法。為了使用這些類,程式中需要引入java.io包。這些流的類有2個分支,分支是基於他們操作時候的資料型別(是字元還是位元組)。


Character Streams

字元流

Reader provides the API and partial implementation for readers--streams that read 16-bit characters--and Writer provides the API and partial implementation for writers--streams that write 16-bit characters. Subclasses of Reader and Writer implement specialized streams and are divided into two categories: those that read from or write to data sinks (shown in gray in the following figures) and those that perform some sort of processing (shown in white). The figure shows the class hierarchies for the Reader and Writer classes.

Reader 和 Writer 是java.io包中那些字元流的抽象父類。Reader為讀字元流提供了API和部分的實現--這些流讀取16為的字元,Wirter為寫字元流提供了API和部分的實現—這些流寫入16為的字元。Reader和Writer的子類實現了專門的流,他們被分為2類:那些從節點讀或者寫入管道的類(在下圖中顯示為灰色)和那些執行了排序過程的類(顯示為白色)。下面的圖顯示了Reader和Writer類們的層級關係。

Most programs should use readers and writers to read and write textual information. The reason is that they can handle any character in the Unicode character set, whereas the byte streams are limited to ISO-Latin-1 8-bit bytes.

很多程式應該使用字元讀寫類來讀或寫文字資訊。因為他們可以處理任何Unicode編碼的字元,而位元組流卻限制在處理ISO-Latin-1 8-bit位元組上。

Byte Streams

位元組流

為了能夠讀寫8位的位元組,程式應當使用位元組流,也就是InputStream和OutputStream的子類。InputStream和OutputStream為輸入流(讀8位位元組的流)和輸出流(寫8位位元組的流)提供了API和部分實現。這些流典型的用法是讀寫如圖片和聲音的二進位制資料。有2中位元組流,ObjectInputStream 和 ObjectOutputStream,被用在物件的序列化中。這些類被Serializetion類覆蓋。

As with Reader and Writer, subclasses of InputStream and OutputStream provide specialized I/O that falls into two categories, as shown in the following class hierarchy figure: data sink streams (shaded) and processing streams (unshaded).

和Reader和Writer相比,InputStream和OutputStream用於處理專門I/O的子類也分為2類,如下圖顯示了他們的類層級:節點流(陰影的)和處理流(沒有陰影的)

Understanding the I/O Superclasses

理解I/O的父類

Reader and InputStream define similar APIs but for different data types. For example, Reader contains these methods for reading characters and arrays of characters:

Reader 和 InputStream 定義了相似的API但是不同的資料型別。例如,Reader包含了這些方法用於讀取字元和字元陣列:

int read()

int read(char cbuf[])

int read(char cbuf[], int offset, int length)

InputStream defines the same methods but for reading bytes and arrays of bytes:

InputStream 定義了相同的方法但是用於讀取位元組和位元組陣列。

int read()

int read(byte cbuf[])

int read(byte cbuf[], int offset, int length)

Also, both Reader and InputStream provide methods for marking a location in the stream, skipping input, and resetting the current position.

相同的,Reader 和 InputStream都提供了方法用於標記流中的座標,跳過輸入,和重置當前座標。

Writer and OutputStream are similarly parallel. Writer defines these methods for writing characters and arrays of characters:

Writer 和 OutputStream 也非常相似。Writer定義了這些方法用於寫出字元和字元陣列。

int write(int c)

int write(char cbuf[])

int write(char cbuf[], int offset, int length)

And OutputStream defines the same methods but for bytes:

OutputStream定義了這些相同的方法但是用於位元組。

int write(int c)

int write(byte cbuf[])

int write(byte cbuf[], int offset, int length)

All of the streams--readers, writers, input streams, and output streams--are automatically opened when created. You can close any stream explicitly by calling its close method. Or the garbage collector can implicitly close it, which occurs when the object is no longer referenced.

所有的流-- readers, writers, input streams, and output streams—建立的時候會自動開啟。你能通過close方法明確的關閉任何一個流。或者是垃圾回收期在暗中關閉,這種情況是發生在物件不再被引用的時候。

相關推薦

[讀書]java I/O介紹

英文不好,拿來做閱讀練習。。。。一步一步,有些地方可能表達有問題,見諒。 Overview of I/O Streams i/o流的概述 To bring in information, a program opens a stream on an information

Java I/O的總結

註意 size 標記接口 ble ansi 寫入 就會 另一個 span I/O的類結構圖 I/O的分類 根據處理的數據類型分為:字節流和字符流。 根據數據流向分為:輸入流和輸出流。 流又可分為節點流和處理流。 節點流 直接與數據源相連 處理流 與節點流一

java I/O詳解

practice bubuko put bre 技術分享 writer 多媒體 buffered args 概況 I/O流主要分為二大類別:字符流和字節流。 字節流(基本流) 1、字節輸入流 類名:FileInputStream 特點:讀(對文件進行讀取操作)

java I/O 溫習隨筆

就是 電腦 實現類 掌握 直接 一個 簡單 txt文本 stream java I/O流的熟練掌握是十分重要的。 在我的理解中,I/O流可以分為兩種:字符流、字節流。字符流就是可以用來傳輸字符的流,比如傳輸txt文本,簡單的說,只有能被電腦中的記事本直接打開並且你能看懂的文

JAVA-I/O任務

讀取 www. acc dst 學生 基本 方式 htm 特性 作業地址 5. Scanner基本概念組裝對象 編寫public static List 答:要使用到的類有File類,FileInputStream類,InputStreamReader類,Buffere

Java I/O 的幾種典型用法

一.緩衝輸入檔案 public class BufferedReaderFile { public static String read (String filePath){

Java I/O知識綜合實戰

範例:import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOExcep

JAVA I/O的分類

Java中 對檔案的操作是以流的方式進行的。流是Java記憶體中的一組有序資料序列。Java將資料從源(檔案、記憶體、鍵盤、網路)讀入到記憶體中,形成了流,然後將 這些流還可以寫到另外的目的地(檔案、記憶體、控制檯、網路),之所以稱為流,是因為這個資料序列在不同時刻所操作的是源的不同部分。   二、分類  流

Java I/O操作(二)緩衝

IO的緩衝區的存在就是為了提高效率,把要操作的資料放進緩衝區,然後一次性把緩衝區的內容寫到目的地,而不是寫一次就往目的地寫一次.在這裡要注意的是當我們關閉了緩衝區物件實際也關閉了與緩衝區關聯的流物件.BufferWriter類FileWriter fw =null;try{f

Java I/O複習(二)—字元、字元緩衝、以及和位元組的區別

Java I/O流複習(二) 1 字元輸入流 字元流(Java IO的Reader和Writer)功能與InputStream和OutputStream非常類似,InputStream和OutputStream基於位元組處理,而字元流(Reader和Writ

面試必備:詳解Java I/O,掌握這些就可以說精通了?

@TOC Java IO概述 IO就是輸入/輸出。Java IO類庫基於抽象基礎類InputStream和OutputStream構建了一套I/O體系,主要解決從資料來源讀入資料和將資料寫入到目的地問題。我們把資料來源和目的地可以理解為IO流的兩端。當然,通常情況下,這兩端可能是檔案或者網路連線。 我們用下面

Java I/O 複製檔案速度對比

### Java I/O流 複製檔案速度對比 ![截圖2020-09-13 18.41.21](https://tva1.sinaimg.cn/large/007S8ZIlgy1giq2vvgv1vj310u0m6aeb.jpg) 首先來說明如何使用Java的IO流實現檔案的複製: 第一步肯定是要*

深入理解JAVA I/O系列三:字符詳解

buffer 情況 二進制文件 感到 復制代碼 使用範圍 轉換 fileread 方式 字符流為何存在 既然字節流提供了能夠處理任何類型的輸入/輸出操作的功能,那為什麽還要存在字符流呢?容我慢慢道來,字節流不能直接操作Unicode字符,因為一個字符有兩個字節,字節流一次只

Java I/O---Reader & Writer(字符)

dap alt per 讀取數據 ioe != can 創建 兩個類 1.Reader & Writer 當我們初次看見Reader和Writer類時,可能會以為這是兩個用來替代InputStream和OutputStreamt的類,但實際上並非如此。

JAVA-初步認識-I/O(字節流-FileWriter-異常處理)

span 指針 出現 ima bsp file 字節 創建 出現異常 一. 通用換行的知識點是在哪兒介紹的?新建了FileWriter就有異常。 將拋出異常語句去掉後,後面幾句話都會出現異常。 紅色波浪線全部出現就是有異常。 文件找不到異常可以理解,為什麽還有

JAVA-初步認識-I/O(字節流-FileReader-讀取方式1)

結果 奇怪 字節 進行 read file -s 聯想 子類 一. 寫完之後,要進行讀取。現在講解的對象從FileWriter變為了FileReader,從輸出為了輸入。 對於IO流的講解,始終是圍繞著字符流來的,立足點也是字符流中的兩個具體的子類對象。 Reader對象的

JAVA-初步認識-I/O(字符-緩沖區-解釋)

bsp 內部 inf .com 分享 png 緩沖區 com gpo 一. 說完了字符流操作文件的基本對象應用以外, 我以為緩沖區是流對象自己內部,而不是中轉站buf。 這裏就是介紹一下緩沖區,作為一個中轉的地方。緩沖區更為深入的用法,還不會,理解還不夠。JAVA-初步

JAVA-初步認識-I/O(字符-緩沖區-BufferWriter)

講解 技術分享 字符 alt spa 技術 span 分類 為什麽 一. 對於緩沖區,也進行了分類,緩沖讀和緩沖寫。現在講解緩沖寫。 為什麽會有BufferWriter這樣的對象存在,就是將之前的ch,buf之類的東西和流對象結合起來,使它們成為一個整體。 將緩沖的功能融

JAVA-初步認識-I/O(字符-緩沖區-BufferedReader-ReadLine方法原理)

操作 nbsp 分享 硬盤 image ade mage 認識 adl 一. 如果按照之前的說法,緩沖區就是數組的話,那麽寫bufr.read(buf)就不能理解。這句話只能看成bufr這個緩沖區對象,采用read方法,將數據讀到buf中,而不是緩沖區對象bufr讀取

Java入門第六篇:I/O

進行 spa out tao 基本數據 速度 序列 自帶 緩存對象 [java中的IO流] 分類: 1. 根據流的方向:輸入流和輸出流 根據讀取文字的大小:字節流和字符流; 字節流按字節讀取,讀取中文時會產生亂碼,字符流按字符讀取,通常用於讀取中文。 根據讀取的方式:節