數據操作流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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章