Java IO流 笔记6 --- 数据流

数据流 DataOutputStream DataInputStream ,这是两个 与平台无关 的流。
若想使用 数据输出流和输入流,肯定要用户指定数据的保存格式。必须按指定的格式保存数据,数据输入流才可以将数据读取进来。

1 DataOutputStream

DataOutputStreamOutputStream 的子类

public class DataOutputStream extends FilterOutputStream implements DataOutput

此类继承自 FilterOutputStream类,同时实现 DataOutput 接口。在 DataOutput 接口,定义了一系列写入各种数据的方法。DataOutput 接口,定义了一系列 writeXXX() 的操作,可以写入各种类型数据。

想要使用 DataOutputStream 写入数据的话,则必须指定好数据的输出格式
在这里插入图片描述

每一行的数据,通过 n\ 完结,每行的各个数据通过 “\t” 完结
在这里插入图片描述

代码示例:

DataOutputStream dos = null; // 声明数据输出流对象
File f = new File("E:"+ File.separator + "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]); // 写入字符串 注意:这里是 writeChars(),不是 writeChar()
   dos.writeChar('\t'); // 写入分隔符 ,这里是 writeChar()
   dos.writeFloat(prices[i]); // 写入价格
   dos.writeChar('\t'); // 写入分隔符
   dos.writeInt(nums[i]); // 写入数量
   dos.writeChar('\n');  // 换行
}
dos.close();  // 关闭输出流

代码生成的文件
在这里插入图片描述

使用 DataOutputStream 写入的数据 要使用 DataInputStream 取出来

2 DataInputStream
DataInputStream dis = new DataInputStream(new FlieInputStream("E:"+ File.separator + "a.txt"));
String name = null; // 接受 名称
float price = 0.0f; // 接受 价格
int num = 0;  // 接受 数量
cha temp[] = null;  // 接受商品名称
int len = 0;
char c = 0;
try{
   while (true) {
      temp = new char[200]; // 开辟空间
      len = 0;
      // 接收内容,因为直到读取到 '\t',才完成了读取一个字符串,未读取到,表示还有内容
      while( (c=dis.readChar()) != '\t') {
           temp[len] = c;
           len++; // 读取长度 加1
      }
      name = new String(temp,0,len); // 将字符数组变为String
      price = dis.readFloat();  // 读取价格
      dis.readChar(); // 读取 \t
      num = dis.readInt();  // 读取 int
      dis,readChar(); // 读取 \n
      System.out.printf("名称:%s; 价格: %5.2f; 数量: %d\n",name,peice,num);
   }
} catch(Exception e) {}
 dis.close();

执行结果:

名称:衬衣; 价格: 98.30; 数量:3
名称:手套; 价格: 30.30; 数量:2
名称:围巾; 价格:50.50; 数量:1

可见:
DataInputStream 读取字符串只能通过 ‘readChar()’,一个个读取,不像 DataOutputStream 一样,还区分 writeChars() writeChar()

总结:

DataOutput接口 和 DataInput接口,两个数据操作流的方法,都是继承两个接口的方法,这两个接口的操作,彼此对应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值