java中IO類的各類操做

java的IO類操做主要包括以下幾類java

 一、File類的使用。數組

 二、字節操做流:OutputStream、InputStream緩存

 三、字符操做流:Reader、Writer函數

 四、對象序列化:serializablespa

(1)File類操作系統

Java代碼.net

[java] view plain copy print?orm

  1. public class File extends Object implements Serizliable Comparable<File>  對象

        從定義看,File類是Object的直接子類,同時它繼承了Comparable接口能夠進行數組的排序。blog

File類的操做包括文件的建立、刪除、重命名、獲得路徑、建立時間等,如下是文件操做經常使用的函數。

 File類的操做:

(1)建立文件,注意File.separator能夠解決跨操做系統的問題。

        下面的例子是一建立一個文件,若是該文件存在則刪除,不然建立該文件。

Java代碼

  1. public class FileDemo1 {   

  2.     public static void main(String[] args) {   

  3.         File file = new File("D:" + File.separator + "test.txt");   

  4.         if (file.exists()) {   

  5.             file.delete();   

  6.         } else {   

  7.             try {   

  8.                 file.createNewFile();   

  9.             } catch (IOException e) {   

  10.                 // TODO Auto-generated catch block   

  11.                 e.printStackTrace();   

  12.             }   

  13.         }   

  14.     }   

  15. }  

 (2)文件的類型函數

       file.isFile(); //判斷是否是文件

       file.isDirectory();//判斷是否是目錄

(3)列出目錄的內容

        pulbic String[] list();//列出全部文件名和目錄名

        public File[] listFiles();//列出全部文件和目錄

(2)字節操做流(btyle)

 (1)字節輸出流OutputStream



 

Java代碼

  1. public class FileDemo1 {   

  2.     public static void main(String[] args) {   

  3.         File file = new File("D:" + File.separator + "test.txt");//指定要操做的文件   

  4.         OutputStream out=null;//定義字節流輸出對象   

  5.         try {   

  6.             //out= new FileOutputStream(file,true);//是否字節追加函數   

  7.             out= new FileOutputStream(file);//獲取實際的字節流輸出對象,內容覆蓋   

  8.         } catch (FileNotFoundException e) {   

  9.             e.printStackTrace();   

  10.         }   

  11.         String  info="hello";//要輸入的內容   

  12.         byte[] b=info.getBytes();//將字符轉化爲字節數組   

  13.         try {   

  14.             out.write(b);   

  15.         } catch (IOException e) {   

  16.             e.printStackTrace();   

  17.         }   

  18.         try {   

  19.             out.close();   

  20.         } catch (IOException e) {   

  21.             e.printStackTrace();   

  22.         }   

  23.     }   

  24. }  

 (2)字節輸入流InputStream


Java代碼

  1. public class FileDemo1 {   

  2.     public static void main(String[] args) {   

  3.         File file = new File("D:" + File.separator + "test.txt");//指定要操做的文件   

  4.         InputStream In=null;//定義字節流輸入對象   

  5.         try {   

  6.             //out= new FileOutputStream(file,true);//是否字節追加函數   

  7.             In= new FileInputStream(file);//獲取實際的字節流輸入對象   

  8.         } catch (FileNotFoundException e) {   

  9.             e.printStackTrace();   

  10.         }   

  11.         int len=0;//輸入數組長度   

  12.         byte[] b=new byte[1024];//開闢空間,讀取內容   

  13.         //byte[] b=new byte[(int)file.length()];//根據文件大小開闢空間   

  14.         try {   

  15.             len=In.read(b);//讀取   

  16.         } catch (IOException e1) {   

  17.             e1.printStackTrace();   

  18.         }   

  19.         try {   

  20.             In.close();   

  21.         } catch (IOException e) {   

  22.             e.printStackTrace();   

  23.         }   

  24.         System.out.println(new String(b,0,len));   

  25.     }   

  26. }

 (3)字符輸出流Write

 

Java代碼

  1. public class FileDemo1 {   

  2.     public static void main(String[] args) {   

  3.         File file = new File("D:" + File.separator + "test.txt");// 指定要操做的文件   

  4.         Writer write = null;// 定義字符輸出流   

  5.         try {   

  6.             write = new FileWriter(file);   

  7.         } catch (IOException e) {   

  8.             e.printStackTrace();   

  9.         }   

  10.         String infor = "hello,heiehiehieh";   

  11.         try {   

  12.             write.write(infor);   

  13.         } catch (IOException e) {   

  14.             e.printStackTrace();   

  15.         }   

  16.         try {   

  17.             write.close();   

  18.         } catch (IOException e) {   

  19.             e.printStackTrace();   

  20.         }   

  21.     }   

  22. }  

 (4)字符輸入流Reader



 

Java代碼

  1. public class FileDemo1 {   

  2.     public static void main(String[] args) {   

  3.         File file = new File("D:" + File.separator + "test.txt");// 指定要操做的文件   

  4.         Reader read = null;// 定義字符輸入流   

  5.         try {   

  6.             read = new FileReader(file);   

  7.         } catch (IOException e) {   

  8.             e.printStackTrace();   

  9.         }   

  10.         String infor = "hello,heiehiehieh";   

  11.         char[] b=new char[1024];//設置字符的長度   

  12.         try {   

  13.             int len=read.read(b);   

  14.         } catch (IOException e) {   

  15.             e.printStackTrace();   

  16.         }   

  17.         try {   

  18.             read.close();   

  19.         } catch (IOException e) {   

  20.             e.printStackTrace();   

  21.         }   

  22.     }   

  23. }  

 (5)字節流和字符流的區別(重點)

      字節流沒有緩衝區,是直接輸出的,而字符流是輸出到緩衝區的。所以在輸出時,字節流不調用colse()方法時,信息已經輸出了,而字符流只有在調用close()方法關閉緩衝區時,信息才輸出。要想字符流在未關閉時輸出信息,則須要手動調用flush()方法。

(6)轉換流:在io中還存在一類是轉換流,將字節流轉換爲字符流,同時能夠將字符流轉化爲字節流。

OutputStreamWriter(OutStream out):j將字節流以字符流輸出。

InputStreamReader(InputStream in):將字節流以字符流輸入。

(7)打印流 PrintStream

      在操做中要求輸出信息時,能夠採用PrintStream進行輸出,它包括PrintWrite和PrintReader

 (3)對象序列化

       對象序列化是指將一個對象能夠轉化爲二進制的byte流,能夠以文件的方式進行保存。

       將對象保存在文件的操做叫作對象的序列化操做。

       將對象從文件中恢復的操做叫作反序列化操做。

一個對象若是要能序列化,它必須繼承Serizliable。在實現序列化是則須要ObjectOurputStream完成,而須要反序列化時則採用ObjectInputStream。

 

 transient關鍵字:變量聲明爲Transient後,該變量不可序列化。

(4)內存流

        在項目的開發過程當中,有時但願只產生臨時文件,將信息輸出的內存中,此時會用到內存流,內存流基本方法以下:

 

Java代碼

  1. public class FileDemo1 {   

  2.     public static void main(String[] args) {   

  3.         String infor = "hello";   

  4.         // 全部的內容向內存中輸入   

  5.         InputStream input = new ByteArrayInputStream(infor.getBytes());   

  6.         // 全部內存的內容由outputStream輸出   

  7.         OutputStream out = new ByteArrayOutputStream();   

  8.         int temp = 0;   

  9.         try {   

  10.             while ((temp = input.read()) != -1) {   

  11.                 char c = Character.toUpperCase((char) temp);   

  12.                 out.write(c);//從內存中輸出,全部的內容都保存在ByteArrayOutputStream中   

  13.             }   

  14.         } catch (IOException e) {   

  15.             e.printStackTrace();   

  16.         }   

  17.         try {   

  18.             input.close();   

  19.         } catch (IOException e) {   

  20.             e.printStackTrace();   

  21.         }   

  22.         try {   

  23.             out.close();   

  24.         } catch (IOException e) {   

  25.             e.printStackTrace();   

  26.         }   

  27.         System.out.println(out.toString());   

  28.     }   

  29. }  

(5)System類對IO的支持



 (6)緩存讀取

相關文章
相關標籤/搜索