數據流 [Java]

java碼農進化ing 2022-01-07 05:42:26 阅读数:570

java

數據流的使用

數據流也是處理流的一種

數據流的作用:

為了方便的操作java語言中的基本數據類型和String類型的數據,可以使用數據流來進行操作

  • 可以將我們java語言中的基本數據類型和String類型的數據持久化存儲到硬盤中,需要的時候就可以使用數據輸入流將硬盤中持久存儲的數據讀入到程序中
    • 這裏的持久化存儲和我們單獨對文本的存儲是不一樣的
    • 我們持久化存儲到硬盤中的文件不是直接打開看的,只是為了進行存儲
      • 打開看有的很多都會出現亂碼 — 看不懂

數據流分為:

  1. DateInputStream
    • DateInputStream一般是套接在InputStream類子類的對象上
      • InputStream就是四大抽象基類之一: 字節輸入流
  2. DateOutputStream
    • DateOutputStream一般是套接在OutputStream類的子類的對象上
      • OutputStream就是四大抽象基類之一: 字節輸出流
      • 注意: 我們使用數據輸出流寫出數據之後要進行顯示的flush()方法進行清空緩沖區
  • 數據流只有字節流,沒有字符流

注意: 我們使用數據輸出流是按照什麼順序進行存儲的,這個時候如果我們使用數據輸入流讀取時也要按照什麼順序進行讀取

DateInputStream中的方法:

boolean readBoolean();

byte readByte();

short readShort();

int readInt();

char readChar();

float readFloat();

double readDouble();

long readLong();

String readUTF();

  • 讀取字符串

void readFully(byte[] b);

  • 讀取byte[]

DateOutputStream中的方法

void writeBoolean();

void writeByte();

void write Short();

void writeInt();

void writeChar();

void writeFloat();

void writeDouble();

void writeLong();

void writeUTF();

void writeBytes(String s);

這裏我們通過兩個程序來理解數據流的實際使用

  1. 首先我們使用數據輸出流將內存中的基本數據類型值,字符串寫出到文件中
package IO流.數據流;
import java.io.FileOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class Demo1 {

public static void main(String[] args) throws IOException{

/* 創建數據流對象 */
DataOutputStream dos = new DataOutputStream(new FileOutputStream("hihi.dat"));
/* 調用數據輸出流對象的寫出數據的方法,將有的基本類型的數據和String類型的數據寫出到硬盤中的文件中 注意: 這個時候我們只是使用硬盤中的文件對我們程序中的基本數據類型和String類型的數據進行了一個持久化的操作 這個時候我們寫出到文件中只是為了持久化的存儲,也就是如果程序中下一次要使用,就可以直接從文件中讀取出來, 這個時候寫出到文件中的數據我們是看不懂的,也不是用來直接打開看的 */
dos.writeInt(13);
dos.writeBoolean(true);
dos.writeUTF("飛飛");
/* 手動調用flush()方法清空緩沖區 */
dos.flush();
/* 流資源的關閉 */
dos.close();
}
}
  1. 其次這裏我們使用數據輸入流將硬盤中我們持久存儲的文件進行讀取,讀取到內存中來
package IO流.數據流;
import java.io.FileInputStream;
import java.io.DataInputStream;
import java.io.IOException;
public class Demo2 {

public static void main(String[] args) throws IOException{

/* 創建數據輸入流對象 */
DataInputStream dis = new DataInputStream(new FileInputStream("hihi.dat"));
/* 使用數據輸入流中的read()方法將數據從硬盤中讀取到內存中來 注意: 這個時候讀取的順序要和當時存儲的順序一致 eg:我們第一個存儲的是int類型的13,第二個存儲的是boolean類型的true,第三個存儲的是String類型的"飛飛" 這個時候如果我們要讀取,這個時候也是要按照這個順序來,第一個是int,第二個是boolean,第三個是String */
int i = dis.readInt();
System.out.println(i);
boolean b = dis.readBoolean();
System.out.println(b);
String s = dis.readUTF();
System.out.println(s);
/* 流資源的關閉 (我們關閉了外層流,就不需要再關閉內層流,因為內層流會隨著外層流的關閉而關閉) */
dis.close();
}
}
版权声明:本文为[java碼農進化ing]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201070542264348.html