Java操作IO對(duì)象流進(jìn)行數(shù)據(jù)的讀寫(xiě)
對(duì)象的讀寫(xiě)使用ObjectInputStream和ObjectOutputStream讀寫(xiě)對(duì)象(序列化與反序列化)。
只有字節(jié)流沒(méi)有字符流
.類必須實(shí)現(xiàn)Serializable接口 給類加個(gè)序列化編號(hào),給類定義一個(gè)標(biāo)記,新的修改后的類還可以操作曾經(jīng)序列化的對(duì)象 靜態(tài)是不能被序列化的,序列化只能對(duì)堆中的進(jìn)行序列化 ,不能對(duì)“方法區(qū)”中的進(jìn)行序列化 不需要序列化的字段前加 transient小例子:
先創(chuàng)建一個(gè)Dog對(duì)象并序列化:
package com.uwo9.test03; import java.io.Serializable; public class Dog implements Serializable {private static final long serialVersionUID = 2809685095868158625L;String name;String color;}
再創(chuàng)建一個(gè)Student對(duì)象并序列化:
package com.uwo9.test03; import java.io.Serializable; public class Student implements Serializable {private static final long serialVersionUID = 9078616504949971001L;static public String schoolName;private transient String name;private transient int age;private double score;private Dog dog;public Student() {super();}public Student(String name, int age, double score, Dog dog) {super();this.name = name;this.age = age;this.score = score;this.dog = dog;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}@Overridepublic String toString() {return 'Student [name=' + name + ', age=' + age + ', score=' + score + ']';} }
將數(shù)據(jù)寫(xiě)入對(duì)象流并存入文件
package com.uwo9.test03; import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.Collections; public class Test01 { public static void main(String[] args) {Dog dog = new Dog();dog.name = '大黃';dog.color = 'Yellow';Student student1 = new Student('學(xué)生1', 18, 99,dog);Student student2 = new Student('學(xué)生2', 19, 99,dog);Student student3 = new Student('學(xué)生3', 20, 99,dog);Student.schoolName = '某某大學(xué)';File file = new File('E:/Temp/Test1.txt');ObjectOutputStream oos = null;try {oos = new ObjectOutputStream(new FileOutputStream(file));//oos.writeObject(student);ArrayList<Student> arrayList = new ArrayList<>();Collections.addAll(arrayList, student1,student2,student3);oos.writeObject(arrayList);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {oos.close();} catch (IOException e) {e.printStackTrace();}}} }
從指定文件中讀取對(duì)象
package com.uwo9.test03; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.ObjectInputStream;import java.util.ArrayList; public class Test02 { public static void main(String[] args) {// 從指定的文件中讀取對(duì)象File file = new File('E:/Temp/Test1.txt');ObjectInputStream ois=null;try {ois = new ObjectInputStream(new FileInputStream(file));// 讀取對(duì)象// Student stu = (Student)ois.readObject();// System.out.println('讀取到的數(shù)據(jù)為:'+stu);@SuppressWarnings('unchecked')ArrayList<Student> arrayList = (ArrayList<Student>) ois.readObject();for (Student student : arrayList) {System.out.println(student);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {try {ois.close();} catch (IOException e) {e.printStackTrace();}} } }
到此這篇關(guān)于Java操作IO對(duì)象流進(jìn)行數(shù)據(jù)的讀寫(xiě)的文章就介紹到這了,更多相關(guān)Java IO流進(jìn)行數(shù)據(jù)的讀寫(xiě)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. JavaScript Tab菜單實(shí)現(xiàn)過(guò)程解析2. ThinkPHP5 通過(guò)ajax插入圖片并實(shí)時(shí)顯示(完整代碼)3. javascript設(shè)計(jì)模式 ? 建造者模式原理與應(yīng)用實(shí)例分析4. jsp+mysql實(shí)現(xiàn)網(wǎng)頁(yè)的分頁(yè)查詢5. Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考6. Docker 部署 Prometheus的安裝詳細(xì)教程7. Ajax引擎 ajax請(qǐng)求步驟詳細(xì)代碼8. IntelliJ IDEA設(shè)置條件斷點(diǎn)的方法步驟9. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁(yè)10. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼
