java数据流接收_JAVA IO分析二:字节数组流、基本数据&对象类型的数据流、打印流...

8e8f0f0bf14b7e9405d30c38c0d3e426.png

importjava.io.DataOutputStream ;importjava.io.File ;importjava.io.FileOutputStream ;public classDataOutputStreamDemo{public static void main(String args[]) throws Exception{ //所有异常抛出

DataOutputStream dos = null ; //声明数据输出流对象

File f = new File("d:" + File.separator + "order.txt") ; //文件的保存路径

dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f))) ; //实例化数据输出流对象

String names[] = {"衬衣","手套","围巾"} ; //商品名称

float prices[] = {98.3f,30.3f,50.5f} ; //商品价格

int nums[] = {3,2,1} ; //商品数量

for(int i=0;i

dos.writeChars(names[i]) ; //写入字符串

dos.writeChar('\t') ; //写入分隔符

dos.writeFloat(prices[i]) ; //写入价格

dos.writeChar('\t') ; //写入分隔符

dos.writeInt(nums[i]) ; //写入数量

dos.writeChar('\n') ; //换行

}

dos.close() ;//关闭输出流

}

};

使用DataOutputStream写入的数据要使用DataInputStream读取进来。前面说过,是给机器看的,人类看不懂.

importjava.io.DataInputStream ;importjava.io.File ;importjava.io.FileInputStream ;public classDataInputStreamDemo{public static void main(String args[]) throws Exception{ //所有异常抛出

DataInputStream dis = null ; //声明数据输入流对象

File f = new File("d:" + File.separator + "order.txt") ; //文件的保存路径

dis = new DataInputStream(new BufferedInputStream(new FileInputStream(f)) ); //实例化数据输入流对象

String name = null ; //接收名称

float price = 0.0f ; //接收价格

int num = 0 ; //接收数量

char temp[] = null ; //接收商品名称

int len = 0 ; //保存读取数据的个数

char c = 0 ; //'\u0000'

try{while(true){

temp= new char[200] ; //开辟空间

len = 0;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,price,num) ;

}

}catch(Exception e){}

dis.close() ;

}

};

5.2f 表示的是 总共的数字长度为5位,其中2位表示小数,3位表示整数。

下面我们再看一个例子,即回顾到我们开始说的,一般DataInputStream 和 DataOutputStream 这种处理流,和对应的节点流ByteArrayInputStream ByteArrayOutputStream 关联在一起使用,即我们说的将字节数组中内存中存放当做一个小文件对待,例子如下:

importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;/*** 数据类型(基本+String)处理流

* 1、输入流 DataInputStream readXxx()

* 2、输出流 DataOutputStream writeXxx()

* 新增方法不能使用多态

*

* java.io.EOFException :没有读取到相关的内容

*@authorAdministrator

**/

public classDataDemo02 {/***@paramargs*/

public static voidmain(String[] args) {try{byte[] data=write();

read(data);

System.out.println(data.length);

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}/*** 从字节数组读取数据+类型

*@throwsIOExceptio

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值