IO流編程

一.字節與字符
Java採用Unicode編碼,每個字符佔2個字節,一個字符佔兩個字節。
IO: I:input 輸入流, output 輸出流

2
假如:硬盤爲參照物1是輸出,2是輸入
程序爲參照物1是輸入 2是輸出
單Java中,我們以程序爲參照物,程序讀取硬盤東西爲輸入流 , 想把程序裏的東西寫入硬盤位輸出流
二.File文件類文件和目錄路徑的抽象表示
1.File類的過濾器
• public String[] list(FilenameFilter filter)
返回一個字符串數組,這些字符串指定此抽象路徑名錶示的目錄中滿足指定過濾器的文件和目錄。

•   public File[] listFiles(FilenameFilter filter)

返回抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中滿足指定過濾器的文件和目錄。

練習:

這裏寫圖片描述
列題:
一個文件後綴統計器

字節流和字符流

•   流就像我們的橋樑 ,溝通兩地
•   字節流 :   8位流 

是一個二進制文件,我們不能看懂。
內存 ==> 程序(Inputstream)
程序 ==> 內存(outputstream)
• 字符流 :操作字符(平常能看懂的文件) 16位流
Byete ==> 文字 ==>char
Char ==>文字==>byete
• 字符流是加工流
講字節轉爲字符再次輸出 , 木材是原材料,然後再被加工成爲了家居。。加工流必須依靠運輸流

•   8位流裏面的操作類  

 InputStream        outputStream 是父類
•    FileInputStream     FileOutputStream是子類
•    BufferedInputStream   BufferedOutputSteam 緩衝流
•    DataInputStream      DataOutputStream 

數據類型流
• ObjectInputStream ObjectOutputStream
對象流

•    OutputStreamwriter    InputStreamReader 

字符流

字節流讀取
File –> fileinputStream –>bufferinputstream (高效)
File –> fileoutputstream –>bufferedoutputstream (高效的)
低級流 就是能夠直接讀寫文件
高級流 在低級流的基礎上,提供了一些其他的功能

字符流讀取 (橋樑 )
File –>filereader –>高效 Bufferreader
File –>filewriter –> 高效 bufferedwriter
InputStreamReader
outputStreamReader 字符體系,可以指定字符集

對象流
Object inputstream
Objectoutputstream
序列化 :把對象按照流一樣的方式存入文本文件中或在網上傳輸,也就是對象寫入數據
反序列化: 把文本文件的流對象數據還原成對象,流數據變爲對象

必須實現Serializable
如何讓它不被網絡傳輸 ?
加上transient 臨時的
隨機文件訪問流?
Randomaccessfile 支持對隨機訪問文件的讀取和寫入
主要方法 getfilepointer 讀取第幾個字節
Seek 指定第一個位置算

模擬多線程下載

Properties
讀取 可以保存在流中從流中加載
Load 輸入流
Store 輸出流
Setproperty
Getproperty

1.  新的IO流 

介紹新IO流
JDK1.4開始引入新的IO(NIO) new io

主要從兩個方面來提高IO操作的效率
1. 利用bufer緩衝器及chanel通道來提高IO的操作速度
2. 利用selector 來支持非阻塞操作
File chanmel 是用來讀取寫得通道
用處: 如果是對於單純的拷貝操作,可用FileChanmel的靜態方法
方法:
Transferfrom 兩個方法 JDK1.7以後有
Transferto
JDK 1.7的改進
Path 路徑
Paths
Files

注 靜態只執行一次

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章