数据操作流
在IO包中,提供了两个与平台无关的数据操作流,分别是数据输出流(
DataOutputStream
) 和数据输入流(
Datalnpu tStream
),
通常数据输出流会按照一定的格式将数据输出,再通过数据输入流按照一定的格式将数据读入,这样可以方便地对数据进行处理。
12.11.1 DataOutputStream 类
DataOutputStream
是OutputStream
的子类,此类的定义如下:
public class DataOutputStream extends FilterOutputStream implements DataOutput
此类继承自 FiIterOutputStream
类(FilterOutputStream
是 OutputStream
的子类),同时实现DataOutput
接口,在DataOutput接口定义了一系列写入各种数据的方法。
DataOutputStream类的常用方法
序号 方法 类型 描述
1 public DataOutputStream(OutputStream out) 构造 实例化对象
2 public final void writelnt(int v) throws IOException 普通 将一个int值以4-byte值形式写入基础输出流中
3 public final void writeDouble(double v) throws IOException普通 写入一个double类型,该值以8-byte值形式写入基础输出流中
4 public final void uTiteChars(String s) throws IOException普通 将一个字符串写入到输出流之中
5 public final void writeChar(int v) throws IOException 普通 将一个字符写入到输出流之中
【例12.58】将订单数据写入到文件test.txt中
package jiaqi;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class demo424_1
{
public static void main(String[] args) throws Exception
{
DataOutputStream dos = new DataOutputStream(new FileOutputStream(new File("d:"+ File.separator + "test.txt")));
String names[] = {"衣服" , "鞋子" , "短袖"};
float price[] = {33.1f , 98.3f , 55.5f};
int num[] = {5 , 8 , 9};
for(int i = 0;i < names.length;i++ )
{
dos.writeChars(names[i]);
dos.writeChar('\t');
dos.writeFloat(price[i]);
dos.writeChar('\t');
dos.writeInt(num[i]);
dos.writeChar('\n');
}
dos.close();
}
}
12.11.2 DatalnputStream 类
DatalnputStream
是 InputStream
的子类,专门负责读取使用DataOutputStream输出的数据,
此类的定义如下:
public class DatalnputStream extends Filterinputstream implements Datalnput
此类继承自FilterlnputStream
(FilterlnputStream 是 InputStream 的子类
),同时实现 Datalnput
接口,在Datalnput接口中定义了一系列读入各种数据的方法。
DatalnputStream类的常用方法
序号 方法 类型 描述
1 public DatalnputStream(InputStream in) 构造 实例化对象
2 public final int readlnt() throws lOException 普通 从输入流中读取整数
3 public final float readFloat() throws lOException 普通 从输入流中读取小数
4 public final char readChar() throws lOException 普通 从输入流中读取一字符
【例12.59】从test.txt中读取数据
package jiaqi;
import java.io.*;
public class demo426_1 {
public static void main(String[] args) throws Exception
{
// TODO 自动生成的方法存根
DataInputStream dis = new DataInputStream(new FileInputStream(new File("d:"+ File.separator + "test.txt")));
String name = null;
float pri = 0.0f;
int nu = 0;
char c = 0;
int len = 0;
char temp[] = null;
try
{
while (true)
{
temp = new char[200];
len = 0;
while ((c = dis.readChar()) != '\t')
{
temp[len] = c;
len++;
}
name = new String(temp,0,len);
pri = dis.readFloat();
dis.readChar();
nu = dis.readInt();
dis.readChar();
System.out.printf("名称:%s,价格:%5.2f,数量:%d\n",name,pri,nu);
}
}
catch (Exception e)
{
}
dis.close();
}
}