java複習第8天---8.1---IO流---字節流
目錄
文章目錄
內容
1、IO流概述
1.1、 詞語解析
-
- I:input 輸入
- O:output 輸出
- 流:數據(字節,字符)1字符=2個字節 1字節=8個二進制位
1.2、數據流
- 圖示1.2-1:
- 解析:
- 數據流的流向,以程序(java)運行所在內存區爲參照;從硬盤或者網絡終端讀入數據爲輸入;從內存把數據寫入硬盤或者網絡終端數據爲輸出
- 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 | 創建文件輸出流以追加方式寫入指定名稱的文件 |
-
使用步驟
- 創建文件輸出流對象,指定寫入文件
- 調用write方法把數據寫入文件
- 調用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(); } } 測試結果:自己測試
-
總結:
- 構造方法中的文件如果存在,且append不指定,則新寫入的內容覆蓋原有內容
- 構造方法中的文件如果不存在,則新建以參數名爲名字的文件名
- \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