数据操作流DataOutputStream和DataInputStream的使用

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

猜你喜欢

转载自wangjc-opal.iteye.com/blog/2408778
今日推荐