1. 程式人生 > >java Io 流類詳解

java Io 流類詳解

修改 文件目錄 != exe [] 深入 clas one fileinput

關於java 流類的復習;習慣性的復習按照圖結構一層層往下深入去了解去復習,最後通過代碼來實現感覺印象會更深刻一些;

技術分享

關於 I/O流:IO可以理解為JAVA用來傳遞數據的管道,創建一個IO,就相當於將管道與某個數據源連接到一起了.

字節流:數據流中最小的數據單元是字節。 字節:字節是一個八位的二進制數是一個很具體的存儲空間;

字符流:數據流中最小的數據單元是字符; 字符:是一個抽象的符號,例如 1、2、3 、人 等 (並不是說直接傳輸字符,而是將字符按照指定的編碼規則,轉成對應的字節流後進行傳輸)


java的常用輸入、輸出流其實都是繼承自4個抽象類,分別是:

基於單字節的InputStream,OutputStream類(面向字節形式的I/O)
基於雙字節的Unicode代碼單元的 Reader, Writer類(面向字符形式的I/O)

Reader(讀入Unicode編碼字節)

  • CharArrayReader(從字符串數組中讀取字符)
    /*CharArrayReader  從字符串數組中讀取字符   */
     public static void chararrayreader() throws IOException {
         char [] a = new char[]{‘a‘,‘b‘,‘c‘};
         CharArrayReader charArrayReader 
    = new CharArrayReader(a); /* 當 CharArrayReader 讀取不到字符時 返回值為-1 */ int i = 0; while ((i = charArrayReader.read())!= -1){ System.out.println("字符 :"+(char)i); } }

  •   InputStreamReader(從本地系統文件中讀取字符序列)
  •   FileReader(InputStreamReader的子類)
  • StringReader(從字符串數組中讀取字符序列)
  • PipedReader(從線程管道中讀取字符序列)
  • InputStreamReader(從輸入流中讀取數據)
     /* 關於 從本地文件中讀取 字符序列 */
      public static void inputreader() throws IOException {
    
          /*從文件中  讀取數據到 數據流 */
          InputStream inputStream = new FileInputStream("E:\\test.txt");
          /* 將字節流轉換成 字符流 */
          InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    
          char []cha = new char[1024];
          int len = inputStreamReader.read(cha);
          System.out.println(new String(cha,0,len));
          /* 關流 */
          inputStreamReader.close();
    
      }

Writer(寫入) 這個不多講 和上邊reader 相反 一個寫入,一個讀出 直接上代碼:

代碼參考:http://blog.csdn.net/lanhuzi9999/article/details/36188047

 /* 關於 從本地文件中讀取 字符序列 */
  public static void inputreader() throws IOException {

      /*從文件中  讀取數據到 數據流 */
      InputStream inputStream = new FileInputStream("E:\\test.txt");
      /* 將字節流轉換成 字符流 */
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

      char []cha = new char[1024];
      int len = inputStreamReader.read(cha);
      System.out.println("本地文件:"+new String(cha,0,len));
      /* 關流 */
      inputStreamReader.close();

  }

  /*  Writer  */
  public static void writer() throws IOException {
      /*String Writer */
      String   string = "從今天起好好復習";
      StringWriter stringWriter = new StringWriter();
      stringWriter.write("你好嗎  ");
      stringWriter.write("這是寫入的  writer ");

      System.out.println(string+stringWriter.toString()
      );

      /*OutputStreamWriter  FileWriter*/
      OutputStream out = System.out;//打印到控制臺  
//      OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件  
      OutputStreamWriter osr = new OutputStreamWriter(out);//輸出  
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//兩句可以綜合到一句。  
//      int ch = 97;//a  
//      int ch = 20320;////      osr.write(ch);  
      String str = "你好嗎?";//你好嗎?  
      osr.write(str);
      osr.flush();
      osr.close();
  }
    public static void transWriteByBuf() throws IOException {
//      OutputStream out = System.out;//打印到控制臺。  
        OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。  
        OutputStreamWriter osr = new OutputStreamWriter(out);//輸出  
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//綜合到一句。  
        BufferedWriter bufw = new BufferedWriter(osr);//緩沖  
//      int ch = 97;//a  
//      int ch = 20320;////      osr.write(ch);  
        String str = "你好嗎?\r\n我很好!";//你好嗎?  
        bufw.write(str);
        bufw.flush();
        bufw.close();
      

  }

File 類 (重點講解)

  • File 類的對象 表示了磁盤上的文件或者文件目錄
  • File類直接處理文件 和文件系統
  • File類提供了方法 對文件或者文件目錄進行操作
  • File 常用方法
  • 懶得寫了 直接復制粘貼來源:http://www.jb51.net/article/36126.htm

    創建方法

    1.boolean createNewFile() 不存在返回true 存在返回false
    2.boolean mkdir() 創建目錄
    3.boolean mkdirs() 創建多級目錄

    刪除方法

    1.boolean delete()
    2.boolean deleteOnExit() 文件使用完成後刪除

  • 判斷方法

    1.boolean canExecute()判斷文件是否可執行
    2.boolean canRead()判斷文件是否可讀
    3.boolean canWrite() 判斷文件是否可寫
    4.boolean exists() 判斷文件是否存在
    5.boolean isDirectory()
    6.boolean isFile()
    7.boolean isHidden()
    8.boolean isAbsolute()判斷是否是絕對路徑 文件不存在也能判斷

    獲取方法

    1.String getName()
    2.String getPath()
    3.String getAbsolutePath()
    4.String getParent()//如果沒有父目錄返回null
    5.long lastModified()//獲取最後一次修改的時間
    6.long length()
    7.boolean renameTo(File f)
    8.File[] liseRoots()//獲取機器盤符
    9.String[] list()
    10.String[] list(FilenameFilter filter)

  • 常用方法實現
  •  /*File  類  */
      public static  void File () throws IOException {
          System.out.println("woca ");
          /*創建一個路徑*/
          File file3 = new File("E://file//jj");
         System.out.println( file3.mkdir());
          /*創建一個文件  */
          File file = new File("E://te.txt");
          file.createNewFile();
    
          /* 根據一個 基路徑去創建文件  */
          File file2 = new File(file3,"tt.txt");
          file2.createNewFile();
          /* 判斷  file對象是否是 文件或者路徑 */
    
          System.out.println("是否是路徑"+file3.isDirectory());
          System.out.println("是否是文件"+file2.isFile());
    
          /*  獲取某個文件夾內文件的目錄 */
    
          File file4 = new File("E://workspace");
    
          String names[]  = file4.list();
          for(String name :names) {
              System.out.println(name);
          }
          
          /*  刪除文件  */
          file2.delete();
    
      }

java Io 流類詳解