【JAVA IO】_資料操作流筆記
本章目標:
掌握DataOutputStream和DataInputStream的作用
可以使用DataOutputStream和DataInputStream寫入和讀取資料
資料操作流
在io包中,提供了兩個與平台無關的資料操作流:
資料輸出資料流(DataOutputStream)
資料輸入流(DataInputStream)
通常資料輸出資料流會按照一定的格式將資料輸出,再通過資料輸入流按照一定的格式將資料讀入。
DataOutputStream是OutputStream的子類,此類定義如下:
public class DataOutputStream extends FilterOutputStream implements DataOutput
DataOutput介面定義了一系列的writeXxx()的操作,可以寫入各種資料類型的資料。
此介面的定義格式應該大致瞭解,便於以後學習。
要想使用DataOutputStream寫入資料的話,則必須指定好資料的輸出格式。
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() ; }};