二十、Java基礎--------IO流之其他對象

         在上面兩篇文章中介紹了IO體系並詳細介紹了字節流以及字符流,本文主要是講述操作文件的File、轉化流、標準輸入與輸出、Properties、打印流以及序列流。

File

    File英文爲"文件"的意識,正如其意識所表達的一樣,File代表的是對磁盤文件對象,File中封裝了對文件操作的一些方法,例如創建.刪除.重命名文件等操作。File類是對象主要用來獲取未文件本身的一些信息,如文件所在的目錄、文件的長度、文件的讀寫權限等。File對象可以作爲參數傳遞給流的構造函數。

        構造方法:

                |--File(File parent, String child)

                根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File 實例。

                |--File(String pathname)

                通過將給定路徑名字符串轉換爲抽象路徑名來創建一個新 File 實例。

                |--File(String parent, String child)

                根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例。

                |--File(URI uri)

                通過將給定的 file: URI 轉換爲一個抽象路徑名來創建一個新的 File 實例。

        常見方法

        1.創建

                boolean createNewFile():在指定位置創建文件,如果該文件已經存在,則不創建,返回false。

                boolean mkdir():創建文件夾。

                boolean mkdirs():創建多級文件夾。

        注:File類創建文件的方法createNewFile()與輸出流的方法不同點:

        File類通過createNewFile方法來創建文件的話,如果文件存在則不創建

        輸出流是對象一建立就創建文件,如果文件存在就會覆蓋原文件。

        2.刪除

                boolean delete():刪除失敗返回false。如果文件正在被使用,則刪除不了返回falsel。

                void deleteOnExit():在程序退出時刪除指定文件。

        3.判斷

                boolean exists():文件或目錄是否存在。

                boolean isFile():是否是一個標準文件。

                boolean isDirectory():是否是一個目錄。

                boolean isHidden():是否是一個隱藏文件。

                boolean isAbsolute():是否爲絕對路徑名。

                boolean canRead()是否可讀

                boolean canWrite()是否可寫

        4.獲取

                String getName():返回由此抽象路徑名錶示的文件或目錄的名稱。

                String getPath():獲取相對路徑

                String getParent():獲取父級目錄,如果此路徑名沒有指定父目錄,則返回 null。

                String getAbsolutePath():獲取絕對路徑

                long lastModified():返回此抽象路徑名錶示的文件最後一次被修改的時間。

                long length():返回由此抽象路徑名錶示的文件的長度.

                static File[] listRoots():列出系統的可用的根

                String[] list():獲取指定目錄下的所有文件和文件夾的名稱數組

                File[] listFiles():獲取指定目錄下的所有文件和文件夾的File數組

        5.修改

                boolean renameTo(File dest):重新命名此抽象路徑名錶示的文件。

轉換流

    IO流分爲字節流與字符流,但是如何實現字節流與字符流之間的轉化呢?這就要使用到下面所講的內容了。

        InputStreamReader

                字節流轉化爲字符流的橋樑,它使用指定的 charset 讀取字節並將其解碼爲字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺默認的字符集。每次調用 InputStreamReader 中的一個 read() 方法都會導致從底層輸入流讀取一個或多個字節。爲了達到最高效率,可要考慮在 BufferedReader 內包裝 InputStreamReader。

        構造方法

                InputStreamReader(InputStream in)

                InputStreamReader(InputStream in, String charsetName)

                示例:BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

 

        OutputSteamWriter

        字符流通向字節流的橋樑可使用指定的 charset 將要寫入流中的字符編碼成字節。它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺默認的字符集。每次調用 write() 方法都會導致在給定字符(或字符集)上調用編碼轉換器。爲了達到最高效率,可要考慮在 BufferedReader 內包裝 InputStreamReader。

    構造方法

                OutputStreamWriter(OutputStream out)

                OutputStreamWriter(OutputStream out, String charsetName)

       應用示範

                BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

                System.in 默認設備爲鍵盤

標準輸入與輸出

     System類中的字段:in,out,它們各代表了系統標準的輸入和輸出設備,默認輸入設備是鍵盤,輸出設備是顯示器。

     System.in的類型是InputStream.

     System.out的類型是PrintStream

Properties類

    Properties是hashtable的子類,也就是說它具備map集合的特點。而且它裏面存儲的鍵值對都是字符串。

是集合中和IO技術相結合的集合容器。

該對象的特點:可以用於鍵值對形式的配置文件,那麼在加載數據時,需要數據有固定格式:鍵=值。

構造方法

    |--Properties():創建一個無默認值的空屬性列表。

    |--Properties(Properties defaults):創建一個帶有指定默認值的空屬性列表。

常用方法:

     |--Object setProperty(String key,String value)

調用Hashtable的put方法,設置鍵值對

     |--String getProperty(String key)

用指定的鍵在此屬性列表中搜索屬性

     |--Set<String> stringPropertyNames

獲取集合中所有的鍵

     |--void load(InputStream in)

從輸入流中讀取屬性列表(鍵和元素對)。

        |--void load(Reader reader)

按簡單的面向行的格式從輸入字符流中讀取屬性列表(鍵和元素對)。

        |--void list(PrintStream out)

將屬性列表輸出到指定的輸出流。

        |--void list(PrintWriter out)

將屬性列表輸出到指定的輸出流。

        |--void Store(OutputStream out,String comments)

以適合使用 load(InputStream) 方法加載到 Properties 表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。

        |--void store(Writer writer, String comments)

以適合使用 load(Reader) 方法的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出字符。

打印流

        可以直接操作輸入流和文件,該流提供了打印方法,可以將各種數據類型的數據都原樣打印。

        字節打印流:PrintStream

        構造函數可以接收的參數類型:

        1.file對象:File

        2.字符串路徑:String

        3.字節輸出流:OutputStream

        字符打印流:PrintWriter

        構造函數可以接收的參數類型:

        1.file對象:File

        2.字符串路徑:String

        3.字節輸出流:OutputStream

        4.字符輸出流:Writer

        注:與其他輸出流不同,PrintStream 永遠不會拋出IOException,而且打印流可以根據指定編碼轉成字符!

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