1. 程式人生 > >Java IO字元流常見類進行分析(四)

Java IO字元流常見類進行分析(四)

一、Reader
用於讀取字元流的抽象類。子類必須實現的方法只有 read(char[], int, int) 和 close()。但是,多數子類將重寫此處定義的一些方法,以提供更高的效率和/或其他功能。
ready() 判斷是否準備讀取此流。
read() 讀取單個字元,這個方法將會阻塞,直到字元可用。
二、BufferedReader
從字元輸入流中讀取文字,緩衝各個字元,從而實現字元、陣列和行的高效讀取。可以指定緩衝區的大小,或者可使用預設的大小。大多數情況下,預設值就足夠大了。例如,

BufferedReader in = new BufferedReader(new FileReader("foo.in"
));

將緩衝指定檔案的輸入。如果沒有緩衝,則每次呼叫 read() 或 readLine() 都會導致從檔案中讀取位元組,並將其轉換為字元後返回,而這是極其低效的。
readLine() 讀取一個文字行。
三、Writer
寫入字元流的抽象類。子類必須實現的方法僅有 write(char[], int, int)、flush() 和 close()。但是,多數子類將重寫此處定義的一些方法,以提供更高的效率和/或其他功能。
四、BufferedWriter
將文字寫入字元輸出流,緩衝各個字元,從而提供單個字元、陣列和字串的高效寫入。可以指定緩衝區的大小,或者接受預設的大小。在大多數情況下,預設值就足夠大了。該類提供了 newLine() 方法,它使用平臺自己的行分隔符概念,此概念由系統屬性 line.separator 定義。並非所有平臺都使用新行符 (‘\n’) 來終止各行。因此呼叫此方法來終止每個輸出行要優於直接寫入新行符。
通常 Writer 將其輸出立即傳送到底層字元或位元組流。除非要求提示輸出,否則建議用 BufferedWriter 包裝所有其 write() 操作可能開銷很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

將緩衝 PrintWriter 對檔案的輸出。如果沒有緩衝,則每次呼叫 print() 方法會導致將字元轉換為位元組,然後立即寫入到檔案,而這是極其低效的。
五、PrintWriter
向文字輸出流列印物件的格式化表示形式。此類實現在 PrintStream 中的所有 print 方法。它不包含用於寫入原始位元組的方法,對於這些位元組,程式應該使用未編碼的位元組流進行寫入。與 PrintStream 類不同,如果啟用了自動重新整理,則只有在呼叫 println、printf 或 format 的其中一個方法時才可能完成此操作,而不是每當正好輸出換行符時才完成。這些方法使用平臺自有的行分隔符概念,而不是換行符。
此類中的方法不會丟擲 I/O 異常,儘管其某些構造方法可能丟擲異常。客戶端可能會查詢呼叫 checkError() 是否出現錯誤。

相關推薦

Java IO字元常見進行分析

一、Reader 用於讀取字元流的抽象類。子類必須實現的方法只有 read(char[], int, int) 和 close()。但是,多數子類將重寫此處定義的一些方法,以提供更高的效率和/或其他功能。 ready() 判斷是否準備讀取此流。 read

java IO位元組字元常見總結

前述 程式在執行結束後,資料內容就會被記憶體回收掉,從而消失,為了使一些有用的資料可以被下一次呼叫該程式時候直接使用,所以需要引入IO的操作將資料從記憶體中傳輸到磁碟中,從而實現資料的持久化(或者使用

java IO字元與位元組簡單使用示例

1.Reader && Writer Reader java.lang.Object |-- java.io.Reader//常用方法 |-- int read() //讀取單個字元 |--

java -io字元FileWrite操作演示

FileWriter字元輸出流演示:   /* * FiileWriter 字元流的操作 * FileWriter 的構造方法 可傳遞 File型別 還可以傳遞String型別 * * 方法 : * write(int c) 傳遞一個位元組 * write(char[] a ) 傳遞一個字

Java IO: 字元的Buffered和Filter

作者: Jakob Jenkov  譯者: 李璟([email protected]) 本章節將簡要介紹緩衝與過濾相關的reader和writer,主要涉及BufferedReader、BufferedWriter、FilterReader、FilterWriter。 Buffer

Java IO: 字元的Piped和CharArray

作者: Jakob Jenkov 譯者: 李璟([email protected]) 本章節將簡要介紹管道與字元陣列相關的reader和writer,主要涉及PipedReader、PipedWriter、CharArrayReader、CharArrayWriter。 Piped

java IO--字元的輸入輸出

/** * ClassName: CharStreamDemo * 字元流: * 字元輸出流:Writer,對檔案的操作 使用子類:FileWriter * 字元輸入流:Reader,對檔案的操作使用子類:FileReader * 每次操作的單位是一個字元 *

Java容器原始碼-Vector的最全的原始碼分析

    (31) public synchronized boolean retainAll(Collection<?> c) 原始碼解釋: 將陣列中不是c中包含的元素全部移除。呼叫AbstractCollection的實現,程式碼也很簡單,不贅

Java淺談數組之內存分析

說明 變量賦值 com logs .info clas code new blog 引用類型的數組的初始化 1數組元素是引用時的內存分析 package com.java.array; class Person{ public int age;//年齡

Java淺談數組之內存分析

靜態 引用變量 ati static ges 組元 strong 淺談 nbsp 數組的內存 1.內存中的數組 數組是一種引用內存,數組引用變量只是一個引用,數組元素和數組變量在內存裏是分開存放的。 實際的數組對象被存放在堆內存(heap)中,數組的引用變量被存儲在棧內存中

Java集合源碼分析HashMap

cto 情況下 base 分布 我們 ron 建立 city 不同 一、HashMap簡介 1.1、HashMap概述   HashMap是基於哈希表的Map接口實現的,它存儲的是內容是鍵值對<key,value>映射。此類不保證映射的順序,假定哈希函數將元

Java集框架:集合輸出

集合輸出的4種形式:Iterator輸出、ListIterator輸出、foreach(加強型for迴圈)輸出、Enumeration輸出。 迭代輸出:Iterator Iterator(迭代器)是集合輸出操作的一個介面,Collection介面中提供了直接為Iterator介面例項

Java和物件

抽象類和抽象方法 1. 抽象類 在 Java 面向物件當中,所有的物件都是用過類進行描繪的,但是並不是所有的類都是用來描繪物件的,如果一個類中沒有包含足夠的資訊來描繪一個具體的物件,我們把這種類定義為抽象類。 抽象類的特徵: 抽象類不能用來例項化物件,所以抽象類必須被

java字元與字串的前世今生

Unicode碼錶 在介紹char型別之前我們先介紹一下Unicode.以下是百度百科給出的解釋: Unicode(統一碼、萬國碼、單一碼)是電腦科學領域裡的一項業界標準,包括字符集、編碼方案等。Unicode 是為了解決傳統的字元編碼方案的侷限而產生的,它為

Java多執行緒之Condition實現原理和原始碼分析

章節概覽、 1、概述 上面的幾個章節我們基於lock(),unlock()方法為入口,深入分析了獨佔鎖的獲取和釋放。這個章節我們在此基礎上,進一步分析AQS是如何實現await,signal功能。其功能上和synchronize的wait,notify一樣。

Java學習筆記之抽象基本概念1

1、基本概念 抽象類:包含一個抽象方法的類 抽象方法:用abstract關鍵字宣告,且只有方法名沒有方法體的方法。 1.1 抽象類的定義和使用規則 包含了一個抽象方法的類必須是抽象類 抽象類和抽象方法都要用abstract關鍵字宣告 抽象方法只需要宣告不用實現

spring4.2.9 java專案環境下ioc原始碼分析——refresh之obtainFreshBeanFactory方法@2處理Resource、載入Document及解析前準備

接上篇文章,上篇文章講到載入完返回Rescouce。先找到要解析的程式碼位置,在AbstractBeanDefinitionReader類的loadBeanDefinitions(String location, Set<Resource> actualResou

Java併發包原始碼學習之AQS框架AbstractQueuedSynchronizer原始碼分析

經過前面幾篇文章的鋪墊,今天我們終於要看看AQS的廬山真面目了,建議第一次看AbstractQueuedSynchronizer 類原始碼的朋友可以先看下我前面幾篇文章: 分析原始碼是非常枯燥乏味的一件事,其實程式碼本身其實就是最好的說明了,因此基本都是貼出一些程式碼加上一些註釋, 因為Abstract

Java中動態陣列ArrayList的用法

1、什麼是ArrayList ArrayList就是傳說中的動態陣列,用MSDN中的說法,就是Array的複雜版本,它提供瞭如下一些好處: 動態的增加和減少元素 實現了ICollection和IList介面 靈活的設定陣列的大小 2、如何使用

Spring基於Java配置Bean:通過@Configuration配置引用xml配置資訊

總結:在@Configuration配置類中,通過@ImportResource就可以引入xml配置檔案,在配置類中可直接通過@AutoWired引用xml檔案中定義的bean。(1)XML配置檔案<?xml version="1.0" encoding="UTF-8"