輸入 java.io. * ; 輸入com.caucho.hessian.io.HessianInput; 輸入com.caucho.hessian.io.HessianOutput; 輸入hessian.Employee。 パブリック クラスHessianSerializeDeserializeMain { / ** *ヘッセ实现序列化 * @paramの従業員 * @return * @throws のIOException * / パブリック 静的 バイト[]シリアライズ(従業員){ ByteArrayOutputStream byteArrayOutputStream = NULL ; HessianOutput hessianOutput =ヌル; 試す{ byteArrayOutputStream = 新しいByteArrayOutputStream(); // ヘッセ的序列化输出 hessianOutput = 新しいHessianOutput(byteArrayOutputStream)。 hessianOutput.writeObject(従業員)。 リターンbyteArrayOutputStream.toByteArray(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } 最後に{ 試みる{ byteArrayOutputStream.closeを(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } 試みる{ hessianOutput.closeを(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } 戻り ヌル。 } / ** *ヘッセ实现反序列化 * @param employeeArray * @return * / パブリック 静的の従業員デシリアライズ(バイト[] employeeArray){ れるByteArrayInputStreamれるByteArrayInputStream = NULL ; hessianInput hessianInput= NULL ; 試す{ れるByteArrayInputStream = 新しいれるByteArrayInputStream(employeeArray)。 // ヘッセ的反序列化读取对象 hessianInput = 新しいHessianInput(するByteArrayInputStream)。 リターン(従業員)hessianInput.readObject(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } 最後に{ 試みる{ byteArrayInputStream.closeを(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } 試みる{ hessianInput.closeを(); } キャッチ(例外e){ e.printStackTrace(); } } 戻り ヌル。 } パブリック 静的 ボイドメイン(文字列[]引数)がスローにIOException { // doSerializeを(); // するSystem.out.println(シリアル化); // // 反序列化 // 従業員デシリアライズ=デシリアライズ(直列化)。 // するSystem.out.println(deserialize.toString()); デシリアライズ(); } パブリック 静的 ボイド doSerialize()はスローのIOException { 従業員 = 新しい従業員を(); employee.setEmployeeId( 1 )。 employee.setEmployeeName( "LCC" ); // employee.setAge( "ナン"); // 序列化 バイト []シリアライズ= シリアライズ(従業員) ファイルファイル = 新しいファイル(「./シリアル化」); もし(!file.exists()){ file.createNewFile(); } System.out.println(String.valueOf(シリアライズ))。 なBufferedOutputStream BufferedOutputStreamが = 新しいなBufferedOutputStream(新たFileOutputStream(ファイル)); bufferedOutputStream.write(シリアライズ)。 bufferedOutputStream.flush(); } パブリック 静的 ボイドデシリアライズ()はスローのIOException { ファイルファイル = 新しいファイル(「./シリアライズします」)。 FileInputStreamのFileInputStreamの = 新しいFileInputStreamを(ファイル); BufferedInputStreamをBufferedInputStreamを =新しいBufferedInputStreamを(のFileInputStream)。 バイトの結果[] = 新しい バイト [1024 ]; もし(bufferedInputStream.read(結果)> result.length){ するSystem.out.println( "小さすぎます" )。 } // 反序列化 従業員デシリアライズ= デシリアライズ(結果)。 System.out.println(deserialize.toString())。 } }
従業員:
パブリック クラス従業員{ プライベート int型の社員。 プライベート文字列employeeName。 プライベート文字列の年齢; 公共 INT getEmployeeId(){ 戻り社員。 } 公共 ボイド setEmployeeId(INT 社員){ この .employeeId = 社員。 } パブリック文字列getEmployeeName(){ 戻りemployeeName。 } 公共 ボイドsetEmployeeName(文字列employeeName){ この .employeeName =従業員名; } パブリック文字列getAge(){ 戻り年齢; } 公共 ボイドsetAge(文字列の年齢){ この .age = 年齢。 } @Override パブリック文字列のtoString(){ 戻り "従業員{" + "社員=" +社員+ "employeeName = '" + employeeName + '\'' + "年齢= '" +年齢+ '\'' + 「}」。 } }
私たちは、書き込みに結果ファイル、従業員の新しいテストフィールドをシリアル化され、非直列化の結果は次の通りです:
従業員の年齢とテスト結果を削除するには、次の通りです:
我々は、すべて成功裏に非直列化することができます