黑馬程式設計師----Java基礎之IO包中其它類
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ---------
File類
用來將檔案或者資料夾封裝成物件,方便對檔案和資料夾進行操作
File物件可以作為引數傳遞給流的建構函式
File類的基本方法:
1.建立. boolean createNewFile()
在指定位置建立檔案,如果該檔案已存在,則不建立,返回false和輸出流不一樣
boolean mkdir():建立資料夾
2.刪除:
boolean delete();//刪除失敗返回false,如果檔案正在被使用,則無法刪除
void deleteOnExit();在程式退出時刪除指定檔案
3.判斷:
isHidden();是否為隱藏檔案
isAbsolutePath()
isDirectory();判斷是否為資料夾
isFile();判斷是否是檔案
記住:在判斷檔案物件是否為檔案或者資料夾是,必須先判斷檔案是否存在: exists();
4.獲取資訊
getName()
getPath()
getParent()
getAbsolutePath()
boolean renameTo(File dest)://重新命名此抽象路徑名錶示的檔案
File f1 = new File("1.txt");
File f2 = new File("2.txt");
f1.renameTo(f2),//將f1的檔名改為f2的檔名
返回指定檔名的檔案
練習:返回指定目錄下的所有檔案
Properties是hashtable的子類
也就是說它具備map集合的特點,而且它裡面儲存的鍵值對都是字串
是集合中和IO技術相結合的集合容器
該物件的特點:可以用於鍵值對形式的配置檔案
Properties集合的基本功能:
設定和獲取元素:
setProperty()//設定元素
getProperty()//獲取元素
StringPropertyNames()//獲取集合中所有的names,返回一個Set集合
在載入資料時,需要資料有固定的格式:鍵=值;
將指定檔案的資料儲存到Properties集合中並列印:
練習:記錄程式執行次數,如果次數已到,則給出註冊提示:
IO包中的其他類:
列印流: printWriter與printStream 可以直接操作輸入流和檔案
該流提供了列印方法,可以將各種資料型別的資料都原樣列印
位元組列印流:printStream
建構函式可以接受的資料型別: file物件(File) 字串路徑(String) 位元組輸出流. OutputStream
字元列印流:printWiter
建構函式可以接受的資料型別: file物件(File) 字串路徑(String) 位元組輸出流. OutputStream 字元輸出流 Writer 識別標記(true)自動換行重新整理
序列流: SequenceInputStream 對多個流進行合併,
操作物件: ObjectInputStream和 ObjectOutputStream: 被操作的物件需要實現Serializable(標記介面)
讀寫資料方法:oos.writeObject(物件) Person p = (Person)ois.readObject()
RandomAccessFile:隨機訪問檔案,自身具備讀寫的方法,通過skipBytes(int x),seek(int )來達到隨機訪問
該類不算是io體系中的子類,而是直接繼承子Obkect
但是它是IO包中成員,因為它具備讀和寫的功能.它內部封裝了一個數組,而且通過指標對陣列元素進行操作
可以通過getFilePointer獲取指標的位置:同時可以通過seek改變指標的位置
通過建構函式可以看出>該類只能操作檔案,而且操作檔案還有模式:只讀 r , 讀寫 rw 而且該物件的建構函式要操作的檔案不存在,則會自動建立
如果存在,則不會覆蓋
管道流PipedInputStream 和 PipedOutputStream ::輸入輸出可以直接連線(in.connect(out)),通過結合線程使用
操作基本資料型別: DataInputStream和DataOutputStream
操作位元組陣列: ByteArrayInputStream 和 ByteArrayOutputStream
操作字元陣列:CharArrayReader 和 CharArrayWrite
操作字串: StringReader 和StringWriter
字元編碼
字元流的出現為了方便操作字元.更重要的是加入了編碼轉換.通過子類轉換流來完成
InputStreamReader 和 OutputStreamWriter
在兩個物件進行構造的時候加入字符集
常見的編碼表有:ASCII (用一個位元組的7位可以表示) ISO88598-1 (用一個位元組的8位可以表示) GB2312(中國的編碼表) GBK Unicode(國際標準碼) utf-8(最多用三個位元組來表示一個字元);
編碼:字串變位元組陣列 String---->byte[] str.getBytes() 預設GBK
解碼:位元組陣列變字串 byte[] ----->String new String(byte[]) 預設GBK
UTF-8:用一個位元組表示是:1000 0000
用兩個位元組表示是:1100 0000 1000 0000
用三個位元組表示為1110 0000 1100 0000 1000 0000