Java核心API -- 10(File、RandomAccessFile)

 

1. File文件類java

    java使用File類(java.io.File)表示操做系統上文件系統中的文件或目錄。換句話說,咱們可使用File操做硬盤上的文件或目錄進行建立或刪除。windows

   File能夠描述文件或目錄的名字,大小等信息,但不能對文件的內容操做!File類的構造器都是有參的。數組

    1)關於路徑的描述:不一樣的文件系統差別較大,Linux和Windows就不一樣!最好使用相對路徑,不要用絕對路徑。dom

    2)「.」表明的路徑:當前目錄(項目所處的目錄),在eclipse_workspace/project_name下,File.separator:常量,目錄分隔符,推薦使用!根據系統自動識別用哪一種分割符,windows中爲/,Linux中爲\。eclipse

    3)建立該對象並不意味着硬盤上對應路徑上就有該文件了,只是在內存中建立了該對象去表明路徑指定的文件。固然這個路徑對應的文件可能根本不存在!ide

    4)createNewFile()中有throws聲明,要求強制捕獲異常!編碼

    5)新建文件或目錄:spa

        ① boolean mkdir():只能在已有的目錄基礎上建立目錄。操作系統

        ② boolean mkdirs():會建立全部必要的父目錄(不存在的自動建立)並建立該目錄。3d

        ③ boolean createNewFile():建立一個空的新文件。

    6)建立目錄中文件的兩種方式:

        ① 直接指定文件須要建立的位置,並調用createNewFile(),前提是目錄都要存在!

        ② 先建立一個File實例指定文件即將存放的目錄,若該目錄不存在,則建立全部不存在的目錄,再建立一個File實例,表明data.dat文件,建立是基於上一個表明目錄的File實例的。使用File(File dir,String fileName)構造方法建立File實例,而後再調用createNewFile():在dir所表明的目錄中表示fileName指定的文件。


    案例17:     

        wKiom1WXgCCgoKqgAAF59SAU8x4285.jpg


     7)查看文件或目錄屬性經常使用方法

        ① long length():返回文件的長度。

        ② long lastModified():返回文件最後一次被修改的時間。

        ③ String getName():返回文件或目錄名。 ⑧String getPath():返回路徑字符串。

        ④ boolean exists():是否存在。        ⑨boolean isFile():是不是標準文件。

        ⑤ boolean isDirectory():是不是目錄。 ⑩boolean canRead():是否能夠讀取。

        ⑥ boolean canWrite():是否能夠寫入、修改。

        ⑦ File[] listFiles():獲取當親目錄的子項(文件或目錄


    案例18:

        wKioL1WXgh7yyoMyAAJJq58ydAY672.jpg 


     8)刪除一個文件:boolean delete():①直接寫文件名做爲路徑和"./data.dat"表明相同文件,也可直接寫目錄名,但要注意第2條。②刪除目錄時:要確保該目錄下沒有任何子項後才能夠將該目錄刪除,不然刪除失敗!


    案例19:

        wKioL1WXgleiN026AAJeqJQQrps491.jpg


  

2. RandomAccessFile隨機訪問文件流

    能夠方便的讀寫文件內容,但只能一個字節一個字節(byte)的讀寫8位。

    1)計算機的硬盤在保存數據時都是byte by byte的,字節埃着字節。

    2)RandomAccessFile打開文件模式:rw:打開文件後可進行讀寫操做;r:打開文件後只讀。

    3)RandomAccessFile是基於指針進行讀寫操做的,指針在哪裏就從哪裏讀寫。

        ① void seek(long pos)方法:從文件開頭到設置位置的指針偏移量,在該位置發生下一次讀寫操做。

        ② getFilePointer()方法:獲取指針當前位置,而seek(0)則將指針移動到文件開始的位置。

        ③ int skipBytes(int n)方法:嘗試跳過輸入的n個字節。

    4)RandomAccessFile類的構造器都是有參的。

        ① RandomAccessFile構造方法1,參數是文件

            RandomAccessFile raf=new RandomAccessFile(file,"rw");

        ② RandomAccessFile構造方法2,參數是字符串路徑(文件名)

            RandomAccessFile raf=new RandomAccessFile("data.dat","rw");

    5)讀寫操做完了,再也不寫了就關閉:close();

    6)經常使用方法

        寫方法

        ① write(int data):寫入第一個字節,且是從低8位寫。

        ② write(byte[] data):將一組字節寫入。

        ③ write(byte[] data.int offset,int length):從data數組的offset位置開始寫,連續寫length個字節到文件中。

        ④ writeInt(int):一次寫4個字節,寫int值。

        ⑤ writeLong(long):一次寫8個字節,寫long值。

        ⑥ writeUTF(String):以UTF-8編碼將字符串連續寫入文件。

        讀方法:

        ① int read():讀一個字節,若已經讀取到文件末尾,則返回-1。

        ② int read(byte[] buf):嘗試讀取buf.length個字節。並將讀取的字節存入buf數組。返回值爲實際讀取的字節數。

        ③ int readInt():連續讀取4字節,返回該int值

        ④ long readLong():連續讀取8字節,返回該long值

        ⑤ String readUTF():以UTF-8編碼將字符串連續讀出文件,返回該字符串值


    案例20:

        wKiom1WXghvwNygJAAPxe2Cw8tg010.jpg


    7)RandomAcceccFile執行復制操做:讀取一個文件,將這個文件中的每個字節寫到另外一個文件中就完成了複製功能。


    案例21:

        wKioL1WXhDvB7klTAANh2g2EQDw936.jpg

相關文章
相關標籤/搜索