DataOutputStream和DataInputStream
1、在io包中,提供了兩個與平臺無關的數據操作流
數據輸出流(DataOutputStream)
數據輸入流(DataInputStream)
2、通常數據輸出流會按照一定的格式將數據輸出,再通過數據輸入流按照一定的格式將數據讀入
(1)DataOutputStream
package org.example.io;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestDataOutputStream {
public static void main(String[] args) throws IOException { // 拋出所有異常
DataOutputStream dos = null; // 聲明數據輸出流對象
File f = new File("e:\\s\\test\\a.txt"); // 文件的保存路徑
dos = new DataOutputStream(new FileOutputStream(f)); // 實例化數據輸出流對象
String[] names = {"襯衫", "手套", "圍巾"}; // 商品名稱
float[] prices = {98.3f, 30.3f, 50.5f}; // 商品價格
int[] nums = {3, 2, 1}; // 商品數量
for (int i = 0; i < names.length; i++) {
dos.writeChars(names[i]); // 輸出字符串
dos.writeChar(‘\t‘); // 輸出分隔符
dos.writeFloat(prices[i]); // 輸出價格
dos.writeChar(‘\t‘);
dos.writeInt(nums[i]); // 輸出數量
dos.writeChar(‘\n‘);
}
dos.flush();
dos.close();
}
}
(2)DataInputStream
package org.example.io;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class TestDataInputStream {
public static void main(String[] args) {
DataInputStream dis = null; // 聲明數據輸入流對象
File f = new File("e:\\s\\test\\a.txt"); // 讀取文件的路徑
try {
dis = new DataInputStream(new FileInputStream(f)); // 實例化數據輸入流對象
String name = null; // 接收名稱
float price = 0.0f; // 接收價格
int num = 0; // 接收數量
char[] temp = null; // 接收商品名稱
int len = 0; // 保存讀取數據的個數
char c = 0; // ‘\u0000‘
while (true) {
temp = new char[200]; // 開辟空間
len = 0;
while ((c = dis.readChar()) != ‘\t‘) { // 單個字符地循環讀取商品名稱
temp[len] = c;
len++;
}
name = new String(temp, 0, len); // 商品名稱
price = dis.readFloat(); // 讀取價格
dis.readChar(); // 讀取\t
num = dis.readInt(); // 讀取數量
dis.readChar(); // 讀取\n
System.out.println("Name:"+name+"\t\tPrice:"+price+"\tNum:"+num);
}
} catch (FileNotFoundException e2) {
e2.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (dis != null) {
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
DataOutputStream和DataInputStream