当前位置: 首页 > news >正文

序列化和反序列化(hadoop)

1.先将上一个博客的Student复制粘贴后面加上H

在StudentH中敲下面代码

package com.example.sei;
import org.apache.hadoop.io.Writable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
//学生类,姓名,年龄
//支持hadoop序列化
//1.要实现Writable接口
//2.补充一个空参构造
public class StudentH implements Writable {
   String name;
   int age;

   //空参构造
   public StudentH() {}
    public StudentH(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    //write:在序列化的时候,调用。把对象写到文件
    @Override
    public void write(DataOutput dataOutput) throws IOException {
        //dataOutput.write(字段);
        dataOutput.writeUTF(name);
        dataOutput.writeInt(age);
    }
 
    //readFields:在反序列化的时候,调用。从文件中读取数据,还原这个对象
    //字段的顺序要与write中的顺序一致
    @Override
    public void readFields(DataInput dataInput) throws IOException {
        //字段=dataInput.read();
        name=dataInput.readUTF();
        age=dataInput.readInt();
    }
}

2.然后将TestStudent复制粘贴后面加上H

在TestStudentH中敲下面代码

package com.example.sei;
 
import java.io.*;
 
public class TestStudentH {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        StudentH student = new StudentH("John", 20);
        System.out.println(student.name + "  " + student.age );
 
        //hadoop序列化:把对象保存到一个文件中
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("student_hadoop.ser"));
      student.write(dos);
 
    }
}
这个是序列化

package com.example.sei;
 
import java.io.*;
 
public class TestStudentH {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
//        StudentH student = new StudentH("John", 20);
//        System.out.println(student.name + "  " + student.age );
//
//        //hadoop序列化:把对象保存到一个文件中
//        DataOutputStream dos = new DataOutputStream(new FileOutputStream("student_hadoop.ser"));
//        student.write(dos);
        //hadoop反序列化:从文件中读取对象
        DataInputStream dis = new DataInputStream(new FileInputStream("student_hadoop.ser"));
        StudentH student1 = new StudentH();
        student1.readFields(dis);
        System.out.println(student1.name + "  " + student1.age );
    }
}

 这个是反序列化。(()

相关文章:

  • 鸿蒙next播放B站视频横屏后的问题
  • Web Service及其实现技术(SOAP、REST、XML-RPC)介绍
  • API安全
  • 【Redis】谈谈Redis的设计
  • 【unity游戏开发——编辑器扩展】使用MenuItem自定义菜单栏拓展
  • 【计算机视觉】OpenCV实战项目:基于OpenCV的车牌识别系统深度解析
  • Excel的详细使用指南
  • MySQL初阶:查询进阶
  • Unity基础学习(十三)核心系统—物理系统之碰撞检测组件篇(2)刚体,碰撞体,材质
  • 前端学习(3)—— CSS实现热搜榜
  • OAuth安全架构深度剖析:协议机制与攻防实践
  • 操作系统实战——QEMU模拟器搭建【rCore 操作系统】
  • 后端开发面试高频50个问题,简单解答
  • w~大模型~合集30
  • Linux 软硬连接详解
  • 如何配置本机host文件
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.3)
  • phpstorm2024.3 设置中文
  • 国产大模型「五强争霸」:决战AGI,谁主沉浮?
  • Go 语言即时通讯系统开发日志-day1:从简单消息收发 Demo 起步
  • 气候多米诺:厄尔尼诺与东南亚跨境害虫或威胁中国粮食安全
  • 日本广岛大学一处拆迁工地发现疑似未爆弹
  • 大外交|中美联合声明拉升全球股市,专家:中美相向而行为世界提供确定性
  • 青年与人工智能共未来,上海创新创业青年50人论坛徐汇分论坛举办
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展
  • 加力、攻坚、借力、问效,上海为优化营商环境推出增量举措