FileInputStream與FileOutputStream學習筆記

  這是個人第一篇博客,記念一下吧!
java

  最近學習了IO流,想着學長說的話,就忽然想要寫寫博客了,別管這是什麼邏輯了,進入正題。
數組

 一.FileInputStream

  1.概念

    FileInputStream是Java語言中抽象類InputStream用來具體實現類的建立對象。FileInputStream能夠從文件系統中的某個文件中得到輸入字節,獲取的文件可用性取決於主機環境。--百度百科app

    FileInputStream是節點流,是字節流學習

  2.API文檔

   1)構造方法:編碼

     FileInputStream​(File file)    經過打開與實際文件的鏈接來建立一個 FileInputStream ,該文件由文件系統中的 File對象 file命名spa

     FileInputStream​(String name)   經過打開與實際文件的鏈接來建立一個 FileInputStream ,該文件由文件系統中的路徑名 name命名。.net

   2)經常使用方法:
3d

     int    read()         從該輸入流讀取一個字節數據
code

       int   read(byte[]  b)     從該輸入流讀取最多b.length個字節的數據。

      int   read()          從該輸入流讀取最多b.length個字節的數據。對象

      void   close()         關閉此文件輸入流並釋放與流相關聯的任何系統資源。

  3.代碼
  

  1)從輸入流中一個字節一個字節讀取

public class IOTest2 {
    public static void main(String[] args) {
        //建立File類對象
        File src = new File("abc.txt");
        //多態
        InputStream is = null;
        try {
            is = new FileInputStream(src);
            //操做
            int temp;
            /*
             * 返回的是讀取到的一個字節數據對應的int值
             * 返回值爲-1時說明文件讀取完畢
             * */
            while((temp=is.read()) != -1) {
                //這裏強制轉換爲char類型
                System.out.print((char)temp);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //關閉流
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
}

  2)將流中數據讀取到字節數組中

public class IOTest3 {
    public static void main(String[] args) {
        //建立源
        File src = new File("abc.txt");
        //選擇流
        InputStream is = null;
        try {
            is = new FileInputStream(src);
            byte[] buffer = new byte[5];
            int len = -1;
            /*從當前位置從輸入流中讀取b.length個字節的數據存放到flush中,
            實際讀取到的數據要看輸入流中的字節數,
            最多讀取的數量就是flush.length,返回值爲實際讀取的字節數
            */
            while((len = is.read(buffer)) != -1) {
                //將輸入流中的數據讀取到flush容器中,從flush容器偏移量爲0的地方開始,讀取最多這麼多個字節
                //用獲得的flush數組構造字符串,從flush數組偏移量爲0處開始
                String str = new String(buffer, 0, len);    //len是當前flush的實際長度
                System.out.println(str);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
}

  注:這裏解釋一下偏移量的概念。就是假如我字節數組下標爲0~10,如今偏移量爲1,那麼字節數據就是從字節數組下標爲1的地方開始存放,同時要注意既然偏移了1個單位,那麼字節數組可存放的數據個數就爲10(1~10)個了

 

  2、FileOutputStream

    1.概念

      文件輸出流是用於將數據寫入 File 或 FileDescriptor 的輸出流  -百度百科

    2.API文檔

    1)構造方法:

     FileOutputStream​(File file)              建立文件輸出流以寫入由指定的 File對象表示的文件。

     FileOutputStream​(File file, boolean append)      建立文件輸出流以寫入由指定的 File對象表示的文件。(可追加寫出)

     FileOutputStream​(String name)              建立文件輸出流以指定的名稱寫入文件。

      FileOutputStream​(String name, boolean append)     建立文件輸出流以指定名稱寫入文件

    2)經常使用方法

    void    write​(int b)              將指定字節寫入到此文件輸出流。

    void    write​(byte[] b)            將 b.length字節從指定的字節數組寫入此文件輸出流。

    void    write​(byte[] b, int off, int len)  將 len字節從指定的字節數組開始,從偏移量 off開始寫入此文件輸出流。

    3.代碼

    

public class IOTest4 {
    public static void main(String[] args) {
        File src = new File("nb.txt");        //文件不存在會自動建立
        OutputStream os = null;        
        try {
            //os = new FileOutputStream(src);
            os = new FileOutputStream(src,true);    //append標識,追加寫入
            
            //操做
            String message = "change\r\n";            //寫入的信息
            byte[] data = message.getBytes();        //轉換成字節數組(編碼)
            //將字節數組中的數據寫入到輸出流中
            os.write(data, 0, data.length);
            os.flush();                                //寫入後及時刷新流
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

   最後再附上一張圖和一篇很好的博客

  

   

       

   

     http://www.javashuo.com/article/p-dycumnfv-db.html

相關文章
相關標籤/搜索