本节目标:
1.掌握DataOutputStream和DataInputStream的作用
2.使用数据操作流读写数据
数据操作流
在io包中,提供了两个与平台无关的数据操作流:
- 数据输出流(DataOutputStream)
- 数据输入流(DataInputStream)
通常数据输出流会按照一定的格式输出,通过数据输入流按照一定的格式读入。例如:
DataOutputStream
java.io.OutputStream java.io.FilterOutputStream java.io.DataOutputStream
同时实现了DataOutput接口,该接口定义了一系列写入数据writeXXX()的方法。
如果要想写入数据,必须指定数据的保存格式。
public class DataOutputStreamDemo1 {
public static void main(String[] args) throws IOException {
File f = new File("f:" + File.separator + "test1.txt");
DataOutputStream 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.writeChars("\t");
dos.writeFloat(prices[i]);
dos.writeChars("\t");
dos.writeInt(nums[i]);
dos.writeChars("\n");
}
dos.close();
}
}
DataInputStream
public class DataOutputStreamDemo2 {
public static void main(String[] args) throws IOException {
File f = new File("f:" + File.separator + "test1.txt");
DataInputStream dis = new DataInputStream(new FileInputStream(f));
String name = null;// 接收名称
float price = 0.0f;// 接收价格
int num = 0;// 接收数量
char c = 0;
int len = 0;
try {
while (true) {
char temp[] = new char[200];// 存放名称
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.printf("名称:%s,价格:%5.2f,数量:%d", name, price, num);
}
} catch (Exception e) {
}
dis.close();
}
}