1. 程式人生 > >黑馬程式設計師----Java基礎之IO包中其它類

黑馬程式設計師----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