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