摘要:知識點總結字節流知識點總結字節流在程序中所有的數據都是以流的方式進行傳輸或保存的,程序需要數據時要使用輸入流讀取數據,而當程序需要將一些數據保存起來時,就要使用輸出流。字節流主要操作類型數據,以數組為準,主要操作類是類和類。
Java知識點總結(JavaIO-字節流)
@(Java知識點總結)[Java, JavaIO]
[toc]
字節流在程序中所有的數據都是以流的方式進行傳輸或保存的,程序需要數據時要使用輸入流讀取數據,而當程序需要將一些數據保存起來時,就要使用輸出流。
字節流主要操作byte類型數據,以byte數組為準,主要操作類是 OutputStream 類和 InputStream 類。
輸出寫入數據,輸入寫出數據
字節輸出流:OutputStream是整個IO包字節輸出流的最大父類,定義如下:
public abstract class OutputStream implements Closeable, Flushable
從定義可以發現:
OutputStream是一個抽象類,必須要通過子類實例化對象,才能使用。
可以使用子類FileOutputStream,向上轉型后,操作一個文件。
可以通過InputStream 從文件中把內容讀取出來。
InputStream 類的定義如下: public abstract class InputStream extends Object implements Closeable
同OutputStream 類一樣,InputStream 本身也是一個抽象類,必須依靠其子類,如果從文件中讀取,使用子類FileInputStream。
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class Demo03 { // 將字符串轉化為byte[]進行輸出 public static void test1() throws IOException { File file = new File("E:" + File.separator + "test.txt"); OutputStream fos = new FileOutputStream(file); String str = "Hello world!"; byte[] b = str.getBytes(); // 只能使用byte數組,所以將字符串轉為byte數組 fos.write(b); fos.close(); } // 在文末追加新的內容,且一個字節一個字節的輸出 public static void test2() throws IOException { File file = new File("E:" + File.separator + "test.txt"); OutputStream fos = new FileOutputStream(file, true); String str = " Hello world!"; byte[] b = str.getBytes(); // 只能使用byte數組,所以將字符串轉為byte數組 for (int i = 0; i < b.length; i++) { fos.write(b[i]); } fos.close(); } // 讀取數據 public static void test3() throws IOException { File file = new File("E:" + File.separator + "test.txt"); InputStream fis = new FileInputStream(file); // byte[] b = new byte[1024]; //定義一個數組用來存放讀取的數據 byte[] b = new byte[(int) file.length()]; // 根據文件的數據量,開辟指定大小的 byte 數組 int len = fis.read(b); // 讀取內容到數組中 fis.close(); System.out.println("讀取數據的長度" + len); // System.out.println("內容為:"+new String(b)); System.out.println("內容為:" + new String(b, 0, len)); // 把 byte 數組轉為字符串輸出 } // 使用循環,一個字節一個字節讀取數據 public static void test4() throws IOException { File file = new File("E:" + File.separator + "test.txt"); InputStream fis = new FileInputStream(file); byte[] b = new byte[(int) file.length()]; for (int i = 0; i < b.length; i++) { b[i] = (byte) fis.read(); } fis.close(); System.out.println("內容為:" + new String(b)); } // 如果不知道要輸入的內容有多大,則使用是否讀到文件末尾的方式來讀取文件 public static void test5() throws IOException { File file = new File("E:" + File.separator + "test.txt"); InputStream fis = new FileInputStream(file); int len = 0; //用于記錄讀取數據的個數 byte[] b = new byte[1024]; int temp = 0; //接收讀取的每一個內容 while((temp = fis.read()) != -1){ b[len] = (byte) temp; len ++; } fis.close(); System.out.println("內容為:" + new String(b,0,len)); } public static void main(String[] args) { try { test1(); test2(); test5(); } catch (IOException e) { e.printStackTrace(); } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69163.html
摘要:使用字節流寫入文件,如果沒有關閉字節流操作,文件依然存在內容,說明字節流是操作文件本身的。字節流比字符流更好,使用更廣泛。 Java知識點總結(JavaIO-字符流) @(Java知識點總結)[Java, JavaIO] [toc] 在程序中一個字符等于兩個字節,那么 Java 提供了 Reader 和 Writer 兩個專門操作字符流的類。 字符輸出流:Writer 類定義如下: p...
摘要:知識點總結轉換流知識點總結是的子類,將一個字符流的輸出對象變為字節流的輸出對象。將字節輸出流轉為字符輸出流字節流轉為字符流蘋果將字節輸入流轉為字符輸入流內容是 Java知識點總結(JavaIO-轉換流) @(Java知識點總結)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV82dQ?w=849&h=226); O...
摘要:緩沖輸入流從被稱為緩沖區的存儲器區域讀出數據僅當緩沖區是空時,本地輸入才被調用。同樣,緩沖輸出流,將數據寫入到緩存區,只有當緩沖區已滿才調用本機輸出。 :https://segmentfault.com/blog... 1.前言 前陣子休息天日常在尋找項目里不好的代碼,看到了這樣的一段代碼: private Result sshSameExec(Session session,...
摘要:我們在前面已經提到的幾種流就有它們的使用情境和和主要用于解決不限于純文本的二進制文件的輸入輸出情境。同時,如果使用帶有緩沖區的緩沖輸入輸出流的話會使得讀寫的效率更高,有助于更快地完成不限于純文本的二進制文件的讀寫。 不同情境的流: 流的種類很多,針對不同的IO數據交換情景我們可以選擇不同的流來完成任務。 我們在前面已經提到的幾種流就有它們的使用情境: 1. FileInputStrea...
閱讀 1123·2021-11-24 09:39
閱讀 3623·2021-09-02 15:21
閱讀 2161·2021-08-24 10:01
閱讀 722·2021-08-19 10:55
閱讀 2447·2019-08-30 15:55
閱讀 1212·2019-08-30 14:16
閱讀 2992·2019-08-29 15:17
閱讀 3235·2019-08-29 13:53