A. 什麼是java序列化,如何實現java序列化
樓主您好
序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
B. java序列化時如何改變文件編碼
序列化是轉化成2進制的,如果你想改變字元的編碼。需要自己實現序列化
C. java怎樣序列化文本文件
假設需要序列化的文本文件路徑是D:/test.txt 序列化後保存在C:/fi.txt 包含下面代碼的類必須實現Serializable 即implements Serializable
File file=new File("D:/test.txt");
File fi=new File("C:/fi.txt");
FileOutputStream fos=new FileOutputStream(fi);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(file);
oos.flush();
oos.close();
fos.close();
D. 誰知道什麼是Java序列化如何實現序列化
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。說明白點就是你可以用對象輸出流輸出到文件.如果不序列化輸出的話.很可能會亂!
實現方式是實現java.io.Serializable介面.這個介面不需要實現任何具體方法.只要implements java.io.Serializable 就好了
E. 什麼是java序列化,如何實現java序列化
序 列 化: 指把堆內存中的Java對象數據,通過某種方式把對象存儲到磁碟文件中或者傳遞給其他網路的節點(在網路上傳輸).我們把這個過程稱之為序列化.
反序列化:把磁碟文件中的對象數據或者把網路節點上的對象數據,恢復成Java對象的過程.
為什麼要做序列化:
1):在分布式系統中,需要共享的數據的JavaBean對象,都得做序列化,此時需要把對象再網路上傳輸,此時就得把對象數據轉換為二進制形式.以後存儲在HttpSession中的對象,都應該實現序列化介面(只有實現序列化介面的類,才能做序列化操作).
2):服務鈍化:如果服務發現某些對象好久都沒有活動了,此時伺服器就會把這些內存中的對象,持久化在本地磁碟文件中(Java對象-->二進制文件).如果某些對象需要活動的時候,現在內存中去尋找,找到就使用,找不到再去磁碟文件中,反序列化我們得對象數據,恢復成Java對象.
需要做序列化的對象的類,必須實現序列化介面:java.io.Serializable介面(標志介面[沒有抽象方法]).
底層會判斷,如果當前對象是Serializable的實例,才允許做序列化. boolean ret = Java對象 instanceof Serializable;
在Java中大多數類都已經實現Serializable介面.
F. java中的序列化是什麼意思
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。說白點就是你可以用內對象輸出流輸出到文件容。如果不序列化輸出的話,很可能會亂。
java中的序列化機制能夠將一個實例對象(只序列化對象的屬性值,而不會去序列化什麼所謂的方法。)的狀態信息寫入到一個位元組流中使其可以通過socket進行傳輸、或者持久化到存儲資料庫或文件系統中;然後在需要的時候通過位元組流中的信息來重構一個相同的對象。
一般而言,要使得一個類可以序列化,只需簡單實現java.io.Serializable介面即可。
G. 關於java序列化
若通過ObjectOutputStream向一個文件中多次以追加方式寫入object,為什麼用ObjectInputStream讀取這些object時會產生S treamCorruptedException?
答:使用預設的serializetion的實現時,一個ObjectOutputStream的構造和一個ObjectInputStream的構造必須一一對應。O bjectOutputStream的構造函數會向輸出流中寫入一個標識頭,而ObjectInputStream會首先讀入這個標識頭。因此,多次以追加方式向一個文件 中寫入object時,該文件將會包含多個標識頭。所以用ObjectInputStream來deserialize這個ObjectOutputStream時,將產 生StreamCorruptedException。
一種解決方法是可以構造一個ObjectOutputStream的子類,並覆蓋writeStreamHeader()方法。被覆蓋後的writeStreamHea der()方法應判斷是否為首次向文件中寫入object?若是,則調用super.writeStreamHeader();若否,即以追加方式寫入object時,則 應調用ObjectOutputStream.reset()方法
H. java 可序列化類型都有哪些
API中找到Serializable的子介面的實現類就可以知道了;
AdapterActivator, Attribute, Attribute, Attributes, BindingIterator, ClientRequestInfo, ClientRequestInterceptor, Codec, CodecFactory, Control, Current, Current, Current, CustomValue, DataInputStream, DataOutputStream, Descriptor, DHPrivateKey, DHPublicKey, DocAttribute, DomainManager, DSAPrivateKey, DSAPublicKey, DynAny, DynAnyFactory, DynArray, DynEnum, DynFixed, DynSequence, DynStruct, DynUnion, DynValue, DynValueBox, DynValueCommon, ECPrivateKey, ECPublicKey, ExtendedRequest, ExtendedResponse, Externalizable, IdAssignmentPolicy, IDLEntity, IDLType, IdUniquenessPolicy, ImplicitActivationPolicy, Interceptor, IORInfo, IORInterceptor, IORInterceptor_3_0, IRObject, Key, LifespanPolicy, Name, NamingContext, NamingContextExt, NotificationFilter, ObjectReferenceFactory, ObjectReferenceTemplate, ORBInitializer, ORBInitInfo, PBEKey, POA, POAManager, Policy, PolicyFactory, PrintJobAttribute, PrintRequestAttribute, PrintServiceAttribute, PrivateKey, PublicKey, QueryExp, RelationType, RemoteRef, RequestInfo, RequestProcessingPolicy, RSAMultiPrimePrivateCrtKey, RSAPrivateCrtKey, RSAPrivateKey, RSAPublicKey, RunTime, SecretKey, ServantActivator, ServantLocator, ServantManager, ServantRetentionPolicy, ServerRef, ServerRequestInfo, ServerRequestInterceptor, StreamableValue, SupportedValuesAttribute, ThreadPolicy, UnsolicitedNotification, ValueBase, ValueExp
--------------------------------------------------------------------------------
I. java對象序列化文件格式轉換
1 - 最好用java轉
2 - 需要用到那個java對象的類,並且要確保你用的類跟當時寫序列化文件的時候的類是同一個版本
3 - 用 ObjectInputStream 讀入對象
4 - 對象最好符合 java bean 規范,即對於每一個成員變數 member,有 getMember 和 setMember 方法
5 - 可以用 jaxb 把對象信息寫入指定的 XML 文件,或者也可以根據需要自己生成xml文本然後輸出
-----
不會java的話,需要學習基本 IO 類的使用,try-catch 語法,如果用jaxb的話最好能在網上找到例子照葫蘆畫瓢,如果自己生成xml文本的話要學會用 StringBuilder ,還要知道怎麼把一些常見的值比如 java.util.Date 等轉換成自己想要的格式的 String 等等……