java複習第8天---8.1---IO流---字節流

java複習第8天---8.1---IO流---字節流


目錄




內容

1、IO流概述

1.1、 詞語解析

    • I:input 輸入
  • O:output 輸出
  • 流:數據(字節,字符)1字符=2個字節 1字節=8個二進制位

1.2、數據流

  • 圖示1.2-1:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Q3RvAzUS-1590641779714)(./images/stream.png)]
  • 解析:
    1. 數據流的流向,以程序(java)運行所在內存區爲參照;從硬盤或者網絡終端讀入數據爲輸入;從內存把數據寫入硬盤或者網絡終端數據爲輸出
    2. java中流表示數據的意思

1.3、java中IO流框架

  • 圖示1.3-1:在這裏插入圖片描述
  • 分類
    • 流向:輸入流和輸出流
    • 數據單位:字節流和字符流
    • 功能劃分:文件流、緩存流、轉換流、打印流等

1、字節流

  一切文件數據(文本、圖片、音視頻等)在存儲時,都是以二進制形式保存,一個一個字節,傳輸時也是如此。所有,字節流可以傳輸任意文件數據。

1.1、OutputStream

  Outputstream爲字節輸出流的父類,把信息傳輸到指定位置,提供基本的功能方法:

修飾符 返回值類型 方法名 參數列表 描述
public void close 關閉此輸出流並釋放與此流相關的系統資源
public void flush 刷新輸出流並強制任何緩衝區字節寫出
public void write byte[] b 把b.length字節從指定的字節數組寫入此輸出流
public void write byte[] b, int off, int len 把len字節從指定字節數組b的偏移量off處開始寫入此輸出流
public abstract void write int len 將指定的字節寫入此輸出流

1.1.1、FileOutputStream

  FileOutputStream 文件輸出流,用於數據寫入文件當中。

  • 常用構造方法
參數類別 描述
File file 創建文件輸出流到以寫入File對象對應的文件中
File file, boolean append 創建文件輸出流以追加方式寫入由指定的 File對象表示的文件
String name 創建文件輸出流以寫入指定名稱的文件
String name, boolean append 創建文件輸出流以追加方式寫入指定名稱的文件
  • 使用步驟

    1. 創建文件輸出流對象,指定寫入文件
    2. 調用write方法把數據寫入文件
    3. 調用close方法關閉輸出流釋放相關的系統資源
  • 示例1.1.1-1:

      package io.FileOutputStream;
    
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class TestFileOutputStream1 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\a.txt";
    
      		FileOutputStream fos = new FileOutputStream(path);
      		int b = 97;
      		fos.write(b);
      		fos.close();
      	}
      }
      測試結果:自己測試
    
  • 示例1.1.1-2:寫入多字節數據

      package io.FileOutputStream;
    
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class TestOutputStream2 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\a.txt";
    
      		FileOutputStream fos = new FileOutputStream(path);
      		String str = "歡迎入坑JAVA!";
      		fos.write(str.getBytes());
      		fos.close();
      	}
      }
      測試結果:自己測試
    
  • 1.1.1-3:向a.txt中換行追加內容

      package io.FileOutputStream;
    
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class TestOutputStream3 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\a.txt";
    
      		FileOutputStream fos = new FileOutputStream(path, true);
      		String str = "《JAVA從入門到放棄》";
      		fos.write("\r\n".getBytes());
      		fos.write(str.getBytes());
      		fos.close();
      	}
      }
      測試結果:自己測試
    
  • 總結:

    1. 構造方法中的文件如果存在,且append不指定,則新寫入的內容覆蓋原有內容
    2. 構造方法中的文件如果不存在,則新建以參數名爲名字的文件名
    3. \r\n爲windows中的回車和換行符

1.2、InputStream

  InputStream 爲自己輸入的父類,定義了字節輸入流共同的基本功能方法:

修飾符 返回值類型 方法名 參數列表 描述
public void close 關閉此輸入流並釋放與此輸入流向關聯的系統資源
public abstract int read 從輸入流中讀取一個字節數據
public int read byte[] b 從輸入流中讀取b.length個字節的數據存入指定自己數組b中,返回實際讀取的字節數

1.2.1、FileInputStream

  FileInputStream 文件輸入流,用於從文件中讀取數據。

  • 常用構造方法
參數列表 描述
File file 通過打開與實際文件的連接創建一個 FileInputStream ,該文件由文件系統中的 File對象 file命名。
String name 通過打開與實際文件的連接來創建一個 FileInputStream ,該文件由文件系統中的路徑名 name命名。
  • 示例1.2.1-1:讀取a.txt中的內容並顯示

      package io.inputstream.fileinputstream;
    
      import java.io.FileInputStream;
      import java.io.IOException;
    
    
      public class TestFileInputSteam1 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\b.txt";
      		FileInputStream fis = new FileInputStream(path);
    
      		byte[] b = new byte[1024];
      		int len;
      		while((len = fis.read(b)) != -1) {
      			for(byte x: b)
      			System.out.print((char)x);
      		}
    
      		fis.close();
      	}
      }
      測試結果:
      package io.inputstream.fileinputstream;
    
      import java.io.FileInputStream;
      import java.io.IOException;
    

1.3、 字節流文件複製

  • 需求:把a.txt文件內容複製到aa.txt,用字節流複製

  • 代碼1.3-1:

      package io.ByteStream;
    
      import java.io.FileInputStream;
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class FileCopy {
      	public static void main(String[] args) throws IOException {
      		String source = "f:\\test\\a.txt";
      		String dest = "f:\\test\\aa.txt";
    
      		fileCopy(source, dest);
      	}
    
      	public static void fileCopy(String source, String dest) throws IOException {
      		FileInputStream fis = new FileInputStream(source);
      		FileOutputStream fos = new FileOutputStream(dest);
    
      		byte[] b = new byte[1024];
      		int len;
    
      		while((len = fis.read(b)) != -1) {
      			fos.write(b, 0, len);
      		}
    
      		fis.close();
      		fos.close();
      	}
      }
      測試結果:
      a.txt
      	歡迎入坑JAVA!《JAVA從入門到放棄》
      	《JAVA從入門到放棄》
      aa.txt
      	歡迎入坑JAVA!《JAVA從入門到放棄》
      	《JAVA從入門到放棄》
    

後記

本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785

前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章