import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
public class DataOutputStreamDemo {
public static void main(String args[]) throws Exception { // 所有异常抛出
DataOutputStream dos = null; // 声明数据输出流对象
File f = new File("d:" + File.separator + "order.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]); // 写入字符串
dos.writeChar('\t'); // 写入分隔符
dos.writeFloat(prices[i]); // 写入价格
dos.writeChar('\t'); // 写入分隔符
dos.writeInt(nums[i]); // 写入数量
dos.writeChar('\n'); // 换行
}
dos.close(); // 关闭输出流
}
};
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
public class DataInputStreamDemo {
public static void main(String args[]) throws Exception { // 所有异常抛出
DataInputStream dis = null; // 声明数据输入流对象
File f = new File("d:" + File.separator + "order.txt"); // 文件的保存路径
dis = new DataInputStream(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位表示整数。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestDataStream {
public static void main(String[] args) {
// 使用DataInputStream,DataOutputStream写入文件且从文件中读取数据。
try {
// Data Stream写到输入流中
DataOutputStream dos = new DataOutputStream(new FileOutputStream(
"datasteam.txt"));
dos.writeBytes("世界"); //按2字节写入,都是写入的低位
dos.writeChars("世界"); // 按照Unicode写入
// 按照UTF-8写入(UTF8变长,开头2字节是由writeUTF函数写入的长度信息,方便readUTF函数读取)
dos.writeUTF("世界");
dos.flush();
dos.close();
// Data Stream 读取
DataInputStream dis = new DataInputStream(new FileInputStream(
"datasteam.txt"));
// 读取字节
byte[] b = new byte[2];
dis.read(b);
System.out.println(new String(b, 0, 2));
// 读取字符
char[] c = new char[2];
for (int i = 0; i < 2; i++) {
c[i] = dis.readChar();
}
System.out.println(new String(c, 0, 2));
// 读取UTF
System.out.println(dis.readUTF());
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestDataStream {
public static void main(String[] args) {
// 使用DataInputStream,DataOutputStream写入文件且从文件中读取数据。
try {
// Data Stream写到输入流中
DataOutputStream dos = new DataOutputStream(new FileOutputStream(
"datasteam.txt"));
dos.write("世界".getBytes()); // 按UTF8编码(我的系统默认编码方式)写入
//dos.write("世界".getBytes("GBK")); //指定其他编码方式
dos.writeChars("世界"); // 按照Unicode写入
// 按照UTF-8写入(UTF8编码长度可变,开头2字节是由writeUTF函数写入的长度信息,方便readUTF函数读取)
dos.writeUTF("世界");
dos.flush();
dos.close();
// Data Stream 读取
DataInputStream dis = new DataInputStream(new FileInputStream(
"datasteam.txt"));
// 读取字节
byte[] b = new byte[6];
dis.read(b);
System.out.println(new String(b, 0, 6));
// 读取字符
char[] c = new char[2];
for (int i = 0; i < 2; i++) {
c[i] = dis.readChar();
}
System.out.println(new String(c, 0, 2));
// 读取UTF
System.out.println(dis.readUTF());
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
参考:http://blog.csdn.net/fishwjy/article/details/38092985