標籤:[] row 可見 input for 技術分享 ++ cep 迴圈輸出
掌握DataOutputStream和DataInputStream的作用。
可以使用DataOutputStream和DataInputStream寫入和讀取資料。
在IO包中提供了兩個與平台無關的資料操作流
資料輸出資料流:DataOutputStream
資料輸入流:DataInputStream
通常按照一定格式將輸入輸出,再按照一定格式將資料輸入。
要想使用資料輸出資料流和輸入資料流,則肯定要使用者指定資料的儲存格式。必須按指定的格式儲存資料,才可以將資料輸入流將資料讀取進來。
DataOutputStream
DataOutputStreams是OutputStream的子類。
public class DataOutputStream extends FilterOutputStream implements DataOutput
此類繼承自FillterOutputStream類,同時實現DataOutput介面。在DataOutput介面定義了一系列寫入各種資料的方法。
DataOutput介面定義了一系列的writeXXX()的操作,可以寫入各種類型資料。
要想使用DataOutputStream寫入資料的話,則必須指定好資料的輸出格式。
每一行的資料,通過‘n\‘完結,每行的各個資料之間通過"\t“完結。
程式碼範例:
package 類集;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]) ; // 寫入字串,注意,這邊少數writeChars(),不是writechar()。 dos.writeChar(‘\t‘) ; // 寫入分隔字元,這邊是讀取writechar()。 dos.writeFloat(prices[i]) ; // 寫入價格 dos.writeChar(‘\t‘) ; // 寫入分隔字元 dos.writeInt(nums[i]) ; // 寫入數量 dos.writeChar(‘\n‘) ; // 換行 } dos.close() ; // 關閉輸出資料流 }};
代碼產生的檔案:
使用DataOutpputStream寫入的資料要使用DataInputStream取出進來,
DataInputStream
package 類集;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‘){ // 接收內容,因為直到讀取到‘\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() ; }};
執行結果:
名稱:襯衣;價格:98.30;數量:3名稱:手套;價格:30.30;數量:2名稱:圍巾;價格:50.50;數量:1
可見:
DataInputStream讀取字串,只能通過readchar(),一個個讀取,不像DataOutpputStream一樣還區分writechars(),writechar()。
總結:
兩個介面:
DataOutput介面和DataInput介面。兩個資料操作流的方法都是繼承兩個介面的方法,這兩個介面的操作,彼此對應,而且以後還要使用。
JAVA IO操作:資料操作流:DataOutputStream和DataInputStream