java i o總結_Java I/O 總結

一、IO流的三種分類方式

1.按流的方向分為:輸入流和輸出流

2.按流的數據單位不同分為:字節流和字符流

3.按流的功能不同分為:節點流和處理流

二、IO流的四大抽象類:

字符流:Reader Writer

字節流:InputStream(讀數據)

OutputStream(寫數據)

三、InputStream的基本方法

int read() throws IOException 讀取一個字節以整數形式返回,如果返回-1已到輸入流的末尾

void close() throws IOException 關閉流釋放內存資源

long skip(long n) throws IOException 跳過n個字節不讀

四、OutputStream的基本方法

void write(int b) throws IOException 向輸出流寫入一個字節數據

void flush() throws IOException 將輸出流中緩沖的數據全部寫出到目的地

五、Writer的基本方法

void write(int c) throws IOException 向輸出流寫入一個字符數據

void write(String str) throws IOException將一個字符串中的字符寫入到輸出流

void write(String str,int offset,int length)

將一個字符串從offset開始的length個字符寫入到輸出流

void flush() throws IOException

將輸出流中緩沖的數據全部寫出到目的地

六、Reader的基本方法

int read() throws IOException 讀取一個字符以整數形式返回,如果返回-1已到輸入流的末尾

七、節點流類型

八、訪問文件之FileInputStream和FileOutputStream繼承基類用于向文件中輸入輸出字節

九、訪問文件之FileReader和FileWriter繼承基類用于向文件中輸入輸出字符

十、緩沖流:緩沖流要套接在相應的節點流之上,提高了讀寫的效率。

此處理流的構造方法都得傳相對應的基類類型

BufferedReader:提供了readLine方法用于高校讀取一行字符串

BufferedWriter:提供了newLine用于寫入一個行分隔符也就是換行

BufferedInputStream沒多大用處

BufferedOutputStream沒多大用處

十一、轉換流:主要作用將字節流轉換成字符流。用處較大!

轉換流在構造時可以指定其編碼集合

InputStreamReader需要和InputStream套接

OutputStreamWriter需要和OutputStream套接

例:OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream(文件路徑);

方法例:osw.getEncoding();獲得流的編碼方式

十二、數據流與字節數組流:

數據流主要為實現可以存取Java原始數據類型如long,boolean

數據流是字節流

DataInputStream需要和InputStream套接

DataOutputStream需要和OutputStream套接

DataInputStream方法:readBoolean() readInt() read……()……

readUTF():網絡傳輸常用方法 讀一個Unicode字符串

DataOutputStream方法與DataInputStream基本對應為寫的方法

//此構造函數等于已可以往一個字節數組里輸入內容

ByteArrayOutputStream baos = new ByteArrayOutputStream();

//此方法為獲取一個字節數組方法返回字節數組

baos.toByteArray();

//此方法獲取字節數組占了多少字節

new ByteArrayInputStream(一個字節數組)。available()

1ByteArrayOutputStream?baos?=2newByteArrayOutputStream();3DataOutputStream?dos?=4newDataOutputStream(baos);5try?{6dos.writeDouble(Math.random());7dos.writeBoolean(true);8ByteArrayInputStream?bais?=9newByteArrayInputStream(baos.toByteArray());10System.out.println(bais.available());11DataInputStream?dis?=newDataInputStream(bais);12System.out.println(dis.readDouble());13System.out.println(dis.readBoolean());14dos.close();??dis.close();15}catch(IOException?e)?{16e.printStackTrace();17}

十二、Print流

Print流只有輸出流無輸入流,PrintWriter和PrintStream分別針對字符字節

兩個類提供了重載的Print和Println方法用于多種數據類型的輸出

PrintWriter和PrintStream的輸出操作不會拋出異常

PrintWriter和PrintStream有自動flush功能

----System.setOut(接收OutputStream類):用于設置系統默認輸出流

十二、Object流

等同于c#序列化,用直接將Object寫入或讀出

transient關鍵字為不序列化此成員變量

需要序列化的類必須實現Serializable接口

主要方法:writeObject(Object); readObject();

讀出為Object類型需要強轉數據類型

1importjava.io.*;2?3?public?classTestObjectIO?{4?public?static?voidmain(String?args[])throwsException?{5?T?t?=newT();6?t.k?=?8;7?FileOutputStream?fos?=newFileOutputStream("d:/share/java/io/testobjectio.dat");8?ObjectOutputStream?oos?=newObjectOutputStream(fos);9?oos.writeObject(t);10?oos.flush();11?oos.close();12?13?FileInputStream?fis?=newFileInputStream("d:/share/java/io/testobjectio.dat");14?ObjectInputStream?ois?=newObjectInputStream(fis);15?T?tReaded?=?(T)ois.readObject();16?System.out.println(tReaded.i?+?"?"?+?tReaded.j?+?"?"?+?tReaded.d?+?"?"?+?tReaded.k);17?18?}19?}20?21?classT22?implementsSerializable23?{24?inti?=?10;25?intj?=?9;26?doubled?=?2.3;27?transient?intk?=?15;28?}

posted on 2010-08-04 10:06 asiawang 閱讀(212) 評論(0) ?編輯 ?收藏

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372184.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

try...catch 語句

一般情況下,我們很少用到 try...catch 語句,但是有時候為了測試代碼中的錯誤,也有可能會用到。小白我也在工作中用到過。那么好的程序設計,什么時候會用到呢? try...catch 一般用來捕獲宿主對象或者ECMAScript拋出的異…

用Mockito回答

在編寫單元測試時 ,必須牢記不要依賴外部組件。 為了避免這種情況,我們使用了模擬框架,對我來說,最容易使用的是Mockito 。 在本文中,我們將看到在Mockito中使用的一種“高級”技術,可以使用Answer接口在模…

java三板斧_Java 枚舉使用三板斧

Java 枚舉使用三板斧1 定義public enum CountryEnums {ONE(1,"韓"),TWO(2,"魏"),THREE(3,"楚"),FOUR(4,"燕"),FIVE(5,"趙"),SIX(6,"齊");private Integer retCode;private String retMsg;// 枚舉的構造方法是 pri…

假裝這些是MyEclipse的快捷鍵(1)

Java快捷鍵 Alt / 代碼自動補全Alt Shift S 功能菜單 Ctrl 1 代碼自動修正Ctrl / 單行注釋/取消Ctrl O 查看類的所有方法Ctrl T 查看類的集成架構圖Ctrl Shift / 多行注釋Ctrl Shift \ 取消多行注釋Ctrl Shift F 代碼格式化轉載于:https://www.cnblogs.com/swordt…

JasperReports JSF插件用例–簡單列表報告

這是JasperReports JSF插件系列的第一篇“用例文章” ,我將專注于一個簡單的需求,并且我將進一步深入。 起點是我們已經為圖書商店完成的項目設置,我將向其中添加一個列表,其中包含在數據庫中注冊的其他圖書,該列表也將…

2016.10.17先占坑

2016.10.17先占坑轉載于:https://www.cnblogs.com/amurzet/p/5978986.html

ER圖流程圖

ER圖:ER圖分為實體、屬性、關系三個核心部分。實體是長方形體現,而屬性則是橢圓形,關系為菱形。 圖書館管理系統流程圖(圖片源于網上):對于程序員來說,我們要知道:整個系統中&#x…

php源碼仿三一重工,織夢仿三一重工業大學氣企業網站php源碼

★模板引薦★源碼稱呼:仿三一重工業大學氣企業網站php源碼仿三一重工業大學氣企業網站php源碼,嘗試完備無錯,兼容合流欣賞器。模板包括安置證明,并包括嘗試數據。本模板鑒于DEDECms 5.7 GBK安排,須要 UTF-8版本的請本人…

接觸Jenkins(Hudson)API,第2部分

這篇文章從本教程的第1部分繼續。 已經快一年了,但是我終于有時間重新審視我為與Jenkins api交互而編寫的一些代碼。 我已經使用了部分工作來幫助管理許多Jenkins構建服務器,主要是保持插件同步以及將作業從一臺機器移動到另一臺機器。 在本文中&#xf…

php樹莓派魔鏡,用樹莓派和顯示器制作一面“魔鏡”

所需要的材料一臺顯示器一塊和顯示器大小相同的雙面鏡一些2*4米的細木條樹莓派機器必要組件(電源、HDMI線、usb無線網卡、鍵盤)木工工具(鋸子、磨砂機、螺絲刀)螺絲、液態釘子選一個合適的顯示器鏡子的大小完全由顯示器的類型和大小決定,所以我希望得到一個盡量大的…

【數字圖像處理】[3]--直方圖規范化

【數字圖像處理】[3]--直方圖規范化直方圖規范化出現的原因是因為直方圖均衡只能產生出固定的圖像,不滿足于需求,有時我們需要讓直方圖變成特定的直方圖,于是有了直方圖規范化原理:可能只看公式沒什么感覺,我們來舉一個…

JavaFX 2.0布局窗格– GridPane

毫無疑問, GridPane是JavaFX 2.0中功能最強大,最靈活的布局窗格。 它在由行和列組成的靈活網格中布置其子項,與Swing的GridBagLayout或HTML的表格模型非常相似。 這種方法使該窗格非常適合于任何形式的表單(例如網站上的聯系表單&…

leecode 題解 || Merge k Sorted Lists 問題

problem: Merge k sorted linked lists and return it as one sorted list.Analyze and describe its complexity.Tags Divide and Conquer Linked List Heap合并K個已序單鏈表 thinking: (1)題目沒有要求不能夠新開ListNode,所以…

PHP在瀏覽器中被拒絕請求,php控制請求頁面瀏覽器緩

緩存的主要作用是防止用戶頻繁刷新網站頁面,導致服務器數據庫負擔,既要保證信息更新的及時性,也要保證緩存能被充分利用。http協議里控制瀏覽器緩存的頭有三個Cache-Control,Expires,Last-Modified,在PHP下…

js -03課 -03 js中的真假判斷

真假的問題:數據類型-數字(NaN)、字符串、布爾、函數、對象(elem、[]、{}、null)、未定義真:非0的數字、非空字符串、true、函數、能找到的元素、[]、{}假:0、NaN、空字符串、false、不能找到的…

HBASE啟動失敗,Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster

Master日志錯誤:2015-12-02 06:34:32,394 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMasterat org.apache.hadoop.hbase.master.HMaster.constru…

Java線程:我應該創建幾個

介紹 “我應該創建多少個線程?”。 許多年前,我的一個朋友問我這個問題,然后我按照“ CPU核心數 1”的指示給了他答案。 當您在這里閱讀時,大多數人都在點頭。 不幸的是,我們所有人當時都錯了。 現在,如果您…

java ui自動化測試腳本,如何用Airtest編寫UI自動化腳本(示例代碼)

前言游戲并不像app一樣直接把渲染樹節點暴露出來,這就造成游戲UI自動化在元素定位上的不方便性,不過依賴airtest的圖片識別,我們可以直接跳過元素檢查,以圖片對比的形式進行自動化,雖然效率可能會低一些,但…

Spring JDBC數據庫連接池設置

對于任何Java應用程序而言, 在Spring框架中設置JDBC數據庫連接池都是很容易的,僅需更改spring配置文件中的一些配置即可。使用Apache Commons DBCP和Commons Pool以及Spring框架的連接池是不錯的選擇,但是如果您擁有Web服務器和托管的J2EE容器…

BZOJ 3505 [Cqoi2014]數三角形(組合數學)

【題目鏈接】 http://www.lydsy.com/JudgeOnline/problem.php?id3505 【題目大意】 給定一個nxm的網格,請計算三點都在格點上的三角形共有多少個。   注意三角形的三點不能共線。 【題解】 我們計算三個點組合的情況,去除橫豎三共線,以及斜…