提示
Java IO DataOutputStream 使用示例。@ermo
# DataOutputStream 使用示例
熟悉完装饰器模式,再来看 DataOutputStream
会比较容易理解。
DataOutputStream
是一个装饰类的实现,它的父类是抽象装饰类 FilterOutputStream
,主要用于将内存中的数据写入输出流。
通过构造器对 OutputStream
进行增强:
public DataOutputStream(OutputStream out)
DataOutputStream
还实现了 DataOutput
接口,主要定义类一些针对基本类型的写方法:
void writeBoolean(boolean v) throws IOException;
void writeInt(int v) throws IOException;
void writeLong(long v) throws IOException;
void writeUTF(String s) throws IOException;
void writeDouble(double v) throws IOException;
来看一个简单的例子。
先定义一个简单的订单类 Order
,省略 getter/setter 方法:
public class Order {
private String orderNo;
private Integer orderType;
private Double orderAmount;
public Order() {}
public Order(String orderNo, Integer orderType, Double orderAmount) {
this.orderNo = orderNo;
this.orderType = orderType;
this.orderAmount = orderAmount;
}
}
public static void write() throws IOException {
List<Order> orders = Arrays.asList(
new Order("OA123", 1, 10.5),
new Order("OA456", 2, 20.5));
String filepath = "src/main/resources/order.txt";
DataOutputStream out = new DataOutputStream(new FileOutputStream(filepath));
try {
out.writeInt(orders.size());
for (Order order : orders) {
out.writeUTF(order.getOrderNo());
out.writeInt(order.getOrderType());
out.writeDouble(order.getOrderAmount());
}
} finally {
out.close();
}
}
public static void main(String[] args) throws IOException {
write();
}
上例中对 FileOutputStream
进行了装饰,然后将 Order
对象中的数据写入文件中。
文件 order.txt
无法打开的,内部存储的是二进制数据。