1. 程式人生 > >java讀寫資料總結

java讀寫資料總結

對於資料的讀寫java提供了專門的讀寫流DataInputStream和DataOutputStream形式進行讀寫,可以進行各種基本資料型別和字串以及UTF格式的陣列或者單個元素的讀寫。 ------------------------------------------------------------------------------------ 以陣列讀寫為例進行演示: File file = new File("d:/data/word.txt"); FileOutputStream fo = new FileOutputStream(file); DataOutputStream dfo = new DataOutputStream(fo); double[] a = {1234,24324,234324,3412,3244,56667}; //採用迴圈遍歷方式寫入檔案 for(int i = 0; i < a.length; i++) { dfo.writeDouble(a[i]); } 讀取的時候同樣採用迴圈遍歷的方式進行讀取。需要注意陣列長度,可以小於等於輸出的陣列長度,但是不能超過,否則會報錯,因為readDouble的返回值是讀取的數值,如果讀取不到,就會丟擲異常。 double[] a2 = new double[2]; for(int i = 0; i < a2.length; i++) { a2[i] = dfin.readDouble(); } 此外java還有物件操作的流ObjectInputStream/ObjectOutputStream,如果將陣列作為物件,可以直接進行輸入輸出。但是取出陣列時,長度不受定義影響,會根據輸入物件進讀入。 File file = new File("d:/data/word.txt"); FileOutputStream fo = new FileOutputStream(file); ObjectOutputStream ofo = new ObjectOutputStream(fo); ofo.writeObject(a); double[] b = new double[2]; b = (double[]) ofin.readObject(); System.out.println(Arrays.toString(a)); System.out.println(Arrays.toString(b)); ------------------結果------------------------------- [1234.0, 24324.0, 234324.0, 3412.0, 3244.0, 56667.0] [1234.0, 24324.0, 234324.0, 3412.0, 3244.0, 56667.0] 二維陣列的考慮,對於DataInputStream和DataOutputStream來說,需要熟知輸出陣列的二個維度,然後根據維度進行雙重迴圈遍歷讀取資料。 對於ObjectInputStream/ObjectOutputStream 定義陣列:double[][] a = {{1,2},{3,4},{5,6}}; ofo.writeObject(a); double[][] b = new double[1][1]; b = (double[][]) ofin.readObject(); for(int i = 0; i < a.length; i ++) { System.out.println(Arrays.toString(a[i])); System.out.println(Arrays.toString(b[i])); } -----------結果-------------------- [1.0, 2.0] [1.0, 2.0] [3.0, 4.0] [3.0, 4.0] [5.0, 6.0] [5.0, 6.0]