更新時間:2020-11-20 17:47:37 來源:動力節點 瀏覽1442次
數據流(data stream)實際上是一組有序,有起點和終點的字節的數據序列。IO數據流包括輸入流和輸出流。除了流向數據存儲或從數據存儲流出的數據不必命名外,每個數據流必須要有一個合適的名字,以反映該數據流的含義。本文就來給大家普及一下IO數據流基本用法。
數據流將“基本數據類型與字符串類型”作為數據源,從而允許程序以與機器無關的方式從底層輸入輸出流中操作Java基本數據類型與字符串類型。
DataInputStream和DataOutputStream提供了可以存取與機器無關的所有Java基礎類型數據(如:int、double、String等)的方法。
DataInputStream和DataOutputStream是處理流,可以對其他節點流或處理流進行包裝,增加一些更靈活、更高效的功能。
使用Data輸出流寫出數據后,再使用Data輸入流讀取時一定要保證讀取的順序和寫出的順序一致,否則數據出現錯亂。
一、使用數據輸入流完成數據的讀取操作
1.聲明數據輸入流對象
DataInputStream dataInputStream=null;
2.實例化數據輸入流對象
dataInputStream=new DataInputStream(new FileInputStream(path));
3.完成數據的讀取操作
byte b=dataInputStream.readByte();
short s=dataInputStream.readShort();
int i=dataInputStream.readInt();
long l=dataInputStream.readLong();
float f=dataInputStream.readFloat();
double d=dataInputStream.readDouble();
char ch=dataInputStream.readChar();
boolean bool=dataInputStream.readBoolean();
String content=dataInputStream.readUTF();
System.out.println("b="+b+",s="+s+",i="+i+",l="+l+",float="+f+",double="+d+",ch="+ch+",bool="+bool+",content="+content);
二、使用數據輸出流完成對Java八大基本數據類型及其String數據類型的寫出功能.
1.聲明數據輸出流對象
DataOutputStream dataOutputStream=null;
2.實例化數據輸出流對象
dataOutputStream=new DataOutputStream(new FileOutputStream(path));
3.將java八大基本數據類型及其String數據類型寫出到指定的文件中
dataOutputStream.writeByte(5);
dataOutputStream.writeShort(10);
dataOutputStream.writeInt(15);
dataOutputStream.writeLong(20);
dataOutputStream.writeFloat(25.0f);
dataOutputStream.writeDouble(30.5d);
dataOutputStream.writeChar('a');
dataOutputStream.writeBoolean(false);
dataOutputStream.writeUTF("b");
三、DataInputStream和DataOutputStream的使用實例:
java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestDataStream {
public static void main(String[] args) {
DataOutputStream dos = null;
DataInputStream dis = null;
FileOutputStream fos = null;
FileInputStream fis = null;
try {
fos = new FileOutputStream("D:/data.txt");
fis = new FileInputStream("D:/data.txt");
//使用數據流對緩沖流進行包裝,新增緩沖功能
dos = new DataOutputStream(new BufferedOutputStream(fos));
dis = new DataInputStream(new BufferedInputStream(fis));
//將如下數據寫入到文件中
dos.writeChar('a');
dos.writeInt(10);
dos.writeDouble(Math.random());
dos.writeBoolean(true);
dos.writeUTF("動力節點");
//手動刷新緩沖區:將流中數據寫入到文件中
dos.flush();
//直接讀取數據:讀取的順序要與寫入的順序一致,否則不能正確讀取數據。
System.out.println("char: " + dis.readChar());
System.out.println("int: " + dis.readInt());
System.out.println("double: " + dis.readDouble());
System.out.println("boolean: " + dis.readBoolean());
System.out.println("String: " + dis.readUTF());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(dos!=null){
dos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(dis!=null){
dis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(fos!=null){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(fis!=null){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
以上就是IO數據流的基本用法,數據輸入流和數據輸出流需要配合使用的情況下,讀取的順序一定要與寫入的順序一致,否則不能正確讀取數據。想要學習更多的IO流知識,請觀看本站的Java基礎教程,各種IO流的屬性和用法這里應有盡有!
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習