摘要:學習筆記三在整個包中,實際上就是分為字節流和字符流,但是除了這兩個流之外,還存在了一組字節流字符流的轉換類。是字節流通向字符流的橋梁它使用指定的讀取字節并將其解碼為字符。主要的功能還是向文件中寫入文件構造函數創建使用默認字符編碼的。
Java IO學習筆記三
InputStreamReader在整個IO包中,實際上就是分為字節流和字符流,但是除了這兩個流之外,還存在了一組字節流-字符流的轉換類。
OutputStreamWriter:是Writer的子類,將輸出的字符流變為字節流,即:將一個字符流的輸出對象變成字節流的輸出對象。
InputStreamReader:是Reader的子類,將輸入的字節流變為字符流,即:將一個字節流的輸入對象變成字符流的輸入對象。
一般在操作輸入輸出內容就需要使用字節或字符流,但是有些時候需要將字符流變成字節流的形式,或者將字節流變為字符流的形式,所以,就需要另外一組轉換流的操作類。
構造函數InputStreamReader 是字節流通向字符流的橋梁:它使用指定的 charset 讀取字節并將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺默認的字符集。
每次調用 InputStreamReader 中的一個 read() 方法都會導致從底層輸入流讀取一個或多個字節。要啟用從字節到字符的有效轉換,可以提前從底層流讀取更多的字節,使其超過滿足當前讀取操作所需的字節。
主要的功能還是從文件中讀取內容,不過是一次性的讀取多個字節,這個很像它的子類FileReader
常用方法InputStreamReader(InputStream in) 創建一個使用默認字符集的 InputStreamReader,不過這里的InputStream是抽下類,因此可以使用它的子類FileInputStream實例化,這里的FileInputStream是操作字節流的,顯然看出這個類的作用就是字符流和字節流的橋梁
實例close()
int read() 讀取單個字符
int read(Char[] c) 讀取字符存儲在字符數組中
int read(char[] cbuf, int offset, int length) 將字符讀入數組中的某一部分
boolean ready() 判斷此流是否已經準備好用于讀取。
package IO; import java.io.*; /** * Created by chenjiabing on 17-5-24. */ public class demo4 { public static void main(String args[]) { File file = new File("/tmp" + File.separator + "test" + File.separator + "test.txt"); InputStreamReader inputStreamReader = null; try { inputStreamReader = new InputStreamReader(new FileInputStream(file)); //初始化 char[] c = new char[(int) file.length()]; //創建數組 try { int len = inputStreamReader.read(c); //將內容讀取到數組中 System.out.println(len); for (int i = 0; i < c.length; i++) { System.out.print(c[i]); } } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); }finally { if(inputStreamReader!=null) { try { inputStreamReader.close(); //關閉 }catch (IOException e) { e.printStackTrace(); } } } } }
OutputStreamWriter注意:從上面的代碼中可以看到這個和FileReader的操作是一樣的,只是構造的方法不一樣
構造函數OutputStreamWriter 是字符流通向字節流的橋梁:可使用指定的 charset 將要寫入流中的字符編碼成字節。它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺默認的字符集。
每次調用 write() 方法都會導致在給定字符(或字符集)上調用編碼轉換器。在寫入底層輸出流之前,得到的這些字節將在緩沖區中累積。可以指定此緩沖區的大小,不過,默認的緩沖區對多數用途來說已足夠大。注意,傳遞給 write() 方法的字符沒有緩沖。
主要的功能還是向文件中寫入文件
常用方法OutputStreamWriter(OutputStream out) 創建使用默認字符編碼的 OutputStreamWriter。這里同樣是抽象類,所以用它的子類FileOutputStream實例化
實例close()
flush()
write(String str) 寫入字符串
void write(String str, int off, int len) 寫入字符串的某一部分。
write(int c) 寫入單個字符
void write(char[] cbuf, int off, int len) 寫入字符數組的某一部分。
package IO; import java.io.*; /** * Created by chenjiabing on 17-5-24. */ public class demo5 { public static void main(String[] args) { File file=new File("/tmp"+File.separator+"test"+File.separator+"test.txt"); OutputStreamWriter outputStreamWriter=null; try { outputStreamWriter=new OutputStreamWriter(new FileOutputStream(file,true)); String str="陳加兵 "; int data=48; String name="chenjiabing"; try { outputStreamWriter.write(str); outputStreamWriter.write(data); outputStreamWriter.write(name,0,2); //寫入字符串的一部分 }catch (IOException e) { e.printStackTrace(); } }catch (FileNotFoundException e) { e.printStackTrace(); }finally { if(outputStreamWriter!=null) { try { outputStreamWriter.flush(); outputStreamWriter.close(); }catch (IOException e) { e.printStackTrace(); } } } } }
參考文章從上面可以看出OutputStreamWriter和FileWriter的用法一樣
http://www.cnblogs.com/lich/archive/2011/12/11/2283848.html
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67125.html
摘要:是方法返回值的數據類型。方法名和參數表共同構成方法簽名。構造方法和它所在類的名字相同,但構造方法沒有返回值。輸入流表示從一個源讀取數據,輸出流表示向一個目標寫數據。下圖是一個描述輸入流和輸出流的類層次圖。有多種構造方法可用來創建對象。 我們經常使用到 System.out.println(),那么它是什么呢? 一、系統方法 我們經常使用到 System.out.println(),那么...
摘要:目標創建一個簡單的框架的程序,實現對數據庫的讀取操作。的核心配置文件核心配置文件,配置數據庫連接信息事物等每一個都需要在核心配置文件中注冊工具類獲取第一步獲取對象既然有了,顧名思義,我們可以從中獲得的實例。 ...
摘要:和方法用來設置線程是否成為守護線程和判斷線程是否是守護線程。守護線程依賴于創建它的線程,隨它的消亡而消亡。使用提供的方法,提醒線程終止,但是否真正終止由線程自己決定。參考實戰高并發程序設計多線程干貨系列一多線程基礎 一、如何創建多線程 1、繼承Thread類 public class MyThread extends Thread { @Override public ...
摘要:今天開始整理學習多線程的知識,談談最重要的兩個關鍵字和。但是這樣一個過程比較慢,在使用多線程的時候就會出現問題。有序性有序性是指多線程執行結果的正確性。這種機制在多線程中會出現問題,因此可以通過來禁止重排。 今天開始整理學習多線程的知識,談談最重要的兩個關鍵字:volatile和synchronized。 一、三個特性 1、原子性 所謂原子性操作就是指這些操作是不可中斷的,要么執行過程...
閱讀 978·2021-11-04 16:08
閱讀 2958·2021-09-13 10:37
閱讀 493·2019-08-30 15:56
閱讀 1928·2019-08-30 15:55
閱讀 2226·2019-08-30 15:53
閱讀 2071·2019-08-30 13:13
閱讀 2908·2019-08-30 12:51
閱讀 1532·2019-08-29 16:06