10.4-全栈Java笔记:常用流详解(二)
上節我們講到「Java中常用流:文件字節流和字節數組流」,本節我們繼續走起~
?緩沖流
BufferedInputStream和BufferedOutputStream這兩個流是處理流,通過內部緩存數組來提高操作流的效率。
【示例1】使用緩沖流實現文件的高效率復制操作
public?class?Demo06 { ??? ????public?static?void?main(String[]?args) { ????????new?Demo06().copyFile("d:/a.txt",?"d:/b.txt"); ??? } ??? ????void?copyFile(String?src,String?dec){ ??????? FileInputStream?fis?=?null; ??????? BufferedInputStream?bis?=?null; ??????? FileOutputStream?fos?=?null; ??????? BufferedOutputStream?bos?=?null; ????????int?temp?= 0; ????????try?{ ?????????????fis?=?new?FileInputStream(src); ?????????????bis?=?new?BufferedInputStream(fis); ???????????? ?????????????fos?=?new?FileOutputStream(dec); ?????????????bos?=?new?BufferedOutputStream(fos); ?????????????while((temp=bis.read())!=-1){ ?????????????????bos.write(temp); ???????????? } ??????? }?catch?(Exception?e) { ?????????????e.printStackTrace(); ??????? }?finally{ ??????????//********增加處理流后,注意流的關閉順序!“后開的先關閉!” ?????????????try?{ ?????????????????if(bos!=null){ ?????????????????????bos.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ??? ????????try?{ ?????????????????if(bis!=null){ ?????????????????????bis.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ?????????????try?{ ?????????????????if(fos!=null){ ?????????????????????fos.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ?????????????try?{ ?????????????????if(fis!=null){ ?????????????????????fis.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ??????? } ??? } } |
示例1 運行結果
數據流將“基本數據類型變量”作為數據源,從而允許程序以與機器無關方式從底層輸入輸出流中操作java基本數據類型。??
DataInputStream和DataOutputStream提供了可以存取與機器無關的所有Java基礎類型數據(如:int,double?等)的方法。?
【示例2】DataInputStream和DataOutputStream的使用
package?com.bjsxt.io; ? import?java.io.*; ? public?class?TestDataStream { ? ????public?static?void?main(String[]?args) { ??????? DataOutputStream?dos?=?null; ??????? DataInputStream?dis?=?null; ??????? FileOutputStream?fos?=?null; ??????? FileInputStream ?fis?=?null; ????????try?{ ?????????????fos?=?new?FileOutputStream("D:/data.txt"); ?????????????fis?=?new?FileInputStream("D:/data.txt"); ???????????? ?????????????dos?=?new?DataOutputStream(new?BufferedOutputStream(fos)); ?????????????dis?=?new?DataInputStream(new?BufferedInputStream(fis)); ???????????? ?????????????//將如下數據寫入到文件中 ?????????????dos.writeDouble(Math.random()); ?????????????dos.writeBoolean(true); ?????????????dos.writeInt(10); ?????????????dos.writeChar('a'); ?????????????dos.flush();?? ??//將流中數據寫入到文件中 ???????????? ???????????? ?????????????//從文件中直接讀取基本數據 ???????????? System.out.println("double: "?+?dis.readDouble()); ???????????? System.out.println("boolean: "?+?dis.readBoolean()); ???????????? System.out.println("int: "?+?dis.readInt()); ???????????? System.out.println("char: "?+?dis.readChar()); ??????? }?catch?(IOException?e) { ?????????????e.printStackTrace(); ??????? }?finally?{ ?????????????try?{ ?????????????????if(dos!=null){ ?????????????????????dos.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ?????????????try?{ ?????????????????if(dis!=null){ ?????????????????????dis.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ?????????????try?{ ?????????????????if(fos!=null){ ?????????????????????fos.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ?????????????try?{ ?????????????????if(fis!=null){ ?????????????????????fis.close(); ???????????????? } ???????????? }?catch?(IOException?e) { ?????????????????e.printStackTrace(); ???????????? } ??????? } ??? } } |
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發經驗,曾在神州數碼、航天院某所研發中心從事軟件設計及研發工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發,精通JAVAEE,熟悉各種流行開發框架。
? 筆記包含從淺入深的六大部分:
? A-Java入門階段
? B-數據庫從入門到精通
? C-手刃移動前端和Web前端
? D-J2EE從了解到實戰
? E-Java高級框架精解
? F-Linux和Hadoop?
轉載于:https://blog.51cto.com/javanew/1944285
總結
以上是生活随笔為你收集整理的10.4-全栈Java笔记:常用流详解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧盟数据保护新规则 75%云应用没准备好
- 下一篇: Equinix公司在巴西圣保罗开通了一个