日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java 不能反序列化_java中的序列化与反序列化

發布時間:2024/4/13 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 不能反序列化_java中的序列化与反序列化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

序列化就是將一個對象以及他的屬性寫入一個文件,保存在存中對象的狀態

反序列化就是把保存的對象狀態再讀出來

實現序列化與反序列化就要使用到IO操作中文件的字節流輸入與輸出

inputStream與outputStream對字節流操作inputStreamReader與outputStreamWrite為字符流操作

input與output是對于java內存而言的? ? ? ? ? ?input輸入是由外部----->內存? ? ? ? ? ? ? ?output輸出是內存---->外部

任何有能力產生數據流(源)的javaio對象就可以看作是一個InputStream對象,我們可以用read()方法將其取出

任何有能力接收數據源(流)的javaio對象我們就可以看作是一個OutputStream對象,可以用write()方法接受

字符流處理的單元為2個字節的Unicode字符,分別操作字符、字符數組或字符串,而字節流處理單元為1個字節,操作字節和字節數組。所以字符流是由Java虛擬機將字節轉化為2個字節的,Unicode字符為單位的字符而成的,所以它對多國語言支持性比較好!如果是音頻文件、圖片、歌曲,就用字節流好點,如果是關系到中文(文本)的,用字符流好點

1.字節流可用于任何類型的對象,包括二進制對象,而字符流只能處理字符或者字符串;

2. 字節流提供了處理任何類型的IO操作的功能,但它不能直接處理Unicode字符,而字符流就可以

字節流與字符流:http://blog.csdn.net/zxman660/article/details/7875799序列化分三步

1.創建FileOutputStream 對象,file是一個File類的對象

File file = new File("D:\\person.per");括號內表示生成文件的存儲路徑

FileOutputStreamfout = new FileOutputStream(file);

2.創建ObjectOutputStream 對象

ObjectOutputStream oos = null;

oos = new ObjectOutputStream(fout);

3.將對象寫入

p是一個實例化的對象Person p = new Person("aaa",12);

oos.writeObject(p);

最后就得關閉輸出流,節省資源

oos.close();

fout.close();

反序列化也分三步,與序列化對應

1.

1.新建FileInputStream 對象,讀取文件

FileInputStream fin = new FileInputStream(file);

2.新建ObjectInputStream 對象

ObjectInputStream oin;

oin = new ObjectInputStream(fin);

3.讀取文件并恢復為對象

Person per1 = (Person) oin.readObject();

fin.close();

oin.close();

public class Javaxuliehua {

public static void main(String[] args) {

//File file = new File("D:"+File.separator+"person.per");

File file = new File("D:\\person.per");

/**

* 序列化過程

*/

Person p = new Person("aaa",12);

try {

FileOutputStream fout = new FileOutputStream(file);

ObjectOutputStream oos = null;

oos = new ObjectOutputStream(fout);

oos.writeObject(p);

oos.close();

fout.close();

/**

* 反序列化過程

*/

FileInputStream fin = new FileInputStream(file);

ObjectInputStream oin;

oin = new ObjectInputStream(fin);

Person per1 = (Person) oin.readObject();

System.out.println(per1);

fin.close();

oin.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}catch (Exception e) {

e.printStackTrace();

}

}

}

class Person implements Serializable{

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

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;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + "]";

}

}

總結

以上是生活随笔為你收集整理的java 不能反序列化_java中的序列化与反序列化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。