テストヘッセ逆順の成功クライアントのデシリアライゼーション少ないフィールドおよびマルチフィールド

輸入 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 + '\'' + 
                "年齢= '" +年齢+ '\'' + 
                「}」
    } 
}

私たちは、書き込みに結果ファイル、従業員の新しいテストフィールドをシリアル化され、非直列化の結果は次の通りです:

 

 従業員の年齢とテスト結果を削除するには、次の通りです:

 

我々は、すべて成功裏に非直列化することができます

おすすめ

転載: www.cnblogs.com/lccsblog/p/12045558.html