日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

think in java i o_5.[Think in Java笔记]Java IO系统

發布時間:2025/3/20 windows 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 think in java i o_5.[Think in Java笔记]Java IO系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.輸入輸出

InputStream和OutputStream是面向字節的,Reader和Write則面向字符的且兼容Unicode。

InputStream類型

ByteArrayInputStream:允許將內存的緩沖區當作InputStream使用

StringBufferInputStream:將String轉換成InputStream

FileInputStream:用于從文件中讀取信息

PipedInputStream:產生用于寫入相關InputStreamOutputStream的數據。實現管道化概念

SequenceInputStream:將兩個或多個InputStream對象轉換成單一InputStream

FilterInputStream:抽象類,作為裝飾器的接口

OutputStream類型

ByteArrayOutputStream:在內存中創建緩沖區,所有送往流的數據都要放置在此緩沖區

FileOutputStream:用于將信息寫至文件

PipedOutputStream:任何寫入其中的信息都會自動作為相關PipedInputStream的輸出

FilterOutputStream:抽象類,作為裝飾器的接口

FilterInputStream類型

DataInputStream:與DataOutputStream搭配使用,因此可以按照可移植方式從流讀取基本數據類型

BufferedInputStream:使用它可以防止每次讀取時都得到進行實際寫操作。代表使用緩沖區

LineNumberInputStream:跟蹤輸入流中的行號;可調用getLineNumber()和setLineNumber(int)

PushbackInputStream:具有能彈出一個字節的緩沖區。因此可以將最后的最后一個字符回退

FilterOutputStream類型

DataOutputStream:與DataInputStream搭配使用,因此可以按照可移植方式從流寫入基本數據類型

PrintStream:用于產生格式化輸出。其中DataOutputStream處理數據的存儲,PrintStream處理顯示

BufferedOutputStream:使用它可以防止每次發送時都得到進行實際寫操作。代表使用緩沖區

RandomAccessFile

RandomAccessFile是一個完全獨立的類,直接從Object派生。

2.I/O流的使用

緩沖輸入文件

如果想打開一個文件用于字符輸入,可以用String或File對象作為文件名的FileInputStream,為了提高速度,對文件進行緩沖,將產生的引用傳遞給一個BufferedReader構造器。

String filename;

BufferedReader in = new BufferedReader(newFileReader(filename));

從內存輸入

StringReader in = newStringReader(BufferedInputFile.read("MemoryInput.java"));

格式化的內存輸入

要讀取格式化數據,可使用DataInputStream。必須為ByteArrayInputStream提供字節數組。

DataInputStream in = newDataInputStream(new ByteArrayInputStream(BufferedInputFile.read("FormattedMemoryInput.java").getBytes()));

文件輸出

FileWriter對象可以向文件寫入數據。

String file = "BasicFileOutput.out";

PrintWriter out = new PrintWriter(newBufferedWriter(new FileWriter(file)));

文本文件輸出的快捷方式

String file = "BasicFileOutput.out";

PrintWriter out = new PrintWriter(file);

存儲和恢復數據

如果使用DataOutputStream寫入數據,Java保證可以使用DataInputStream準確地讀取數據,無論讀和寫數據的平臺多么不同。

讀寫隨機訪問文件

RandomAccessFile除了實現DataInput和DataOutput接口,與I/O繼承層次結構的其他部分實現了分離,RandomAccessFile不支持裝飾,所以不能將其與InputStream和OutputStream子類的任何部分組合。

3.標準I/O

程序的所有輸入都可以來自標準輸入,它的所有的輸出都可以發送到標準輸出,以及所有的錯誤都可以發送到標準錯誤。

標準I/O的意義在于:可以很容易的把程序串聯起來,一個程序的標準輸出可以稱為另一個程序的標準輸入。

從標準輸入中讀取

按標準I/O模型,Java提供了System.in、System.out和System.err。其中System.out和System.err實現被包裝成了printStream對象,System.in卻是一個沒有被包裝過的未經加工的InputStream。即可以立即使用System.out和System.err,但在讀取System.in之前必須對其進行包裝。

將System.in包裝成BufferedReader來使用,但這要求必須用InputStreamReader把System.in轉換成Reader。

BufferedReader in = newBufferedReader(new InputStreamReader(System.in));

將System.out轉換成PrintWriter

System.out是一個PrintStream,而PrintStream是一個OutputStream。PrintWriter有一個可以傳參的構造器,因此使用哪個構造器把System.out轉換成PrintWriter。

PrintWriter out = newPrintWriter(System.out, true);

標準I/O重定向

I/O重定向操作的是字節流,不是字符流;因此使用的是InputStream和OutputStream,而不是Reader和Writer。

4.新I/O

java.nio.*包引入新的Java I/O類庫,其目的在于提高速度。速度提高來自于所使用的數據結構更接近操作系統執行I/O方式:通道和緩沖器。

唯一直接與通道交互的緩沖器是ByteBuffer,即可以存儲未加工字節的緩沖器。

5.對象序列化

如果對象能夠在程序不運行的情況下,仍能保存其運行信息,那么在下次運行時,該對象被重載并擁有的信息與程序上次運行時所擁有信息相同。當然,可以通過將信息寫入文件或數據庫來實現,但如果將一個對象聲明為“持久性”,并處理所有細節,那將會十分方便。

Java的對象序列化是將那些實現了Serializable接口的對象轉換成一個字節序列,并能夠在以后將這個字節序列完全恢復為原來的對象。

利用對象序列化可以實現輕量級持久性。持久性意味著一個對象的生存周期不取決于程序是否正在執行,他可以生存于程序的調度之間。通過將一個序列化對象寫入磁盤,然后在重新調用程序時恢復該對象,就能夠實現持久性的效果。之所以稱輕量級,是因為不能用某種關鍵字來簡單地定義一個對象,并讓系統自動維護其他細節問題。

Java對象序列化支持兩種特性:

一是Java的遠程方法調用(RMI),它使存活于其他計算機上的對象使用起來就像存活于本機上一項。

二是對Java Beans來說,對象序列化是必須的。使用一個Bean是,它的狀態信息是在設計時進行配置,這種狀態信息必須保存下來,并在程序啟動時進行后期恢復,這種具體的工作就是有對象序列化完成的。

對象序列化:創建一個OutputStream,然后將其封裝在一個ObjectOutputStream對象內,通過調用writeObject()方法即可將對象序列化

對象反序列化:創建一個InputStream,封裝在ObjectInputStream內,調用readObject()方法

說明:筆記內容摘自《SCJP考試指南》和《Think in Java》

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的think in java i o_5.[Think in Java笔记]Java IO系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。