提示信息

Java利用对象序列化控制输入输出

梦月之神 已关注

Java中可以利用对象序列化来控制输入输出。对象序列化是指将对象转换成字节流的过程,用于将对象保存在磁盘文件中或通过网络传输。

控制输入输出的方式有两种:
1. 序列化:将对象转换成字节流,可以将字节流写入磁盘文件或通过网络传输。
2. 反序列化:将字节流转换成对象,可以从磁盘文件中读取字节流或通过网络接收字节流。

下面是一个示例代码,展示了如何利用对象序列化来控制输入输出:

  1. import java.io.*;
  2. public class SerializationExample {
  3. public static void main(String[] args) {
  4. // 序列化对象
  5. serializeObject();
  6. // 反序列化对象
  7. deserializeObject();
  8. }
  9. // 序列化对象
  10. public static void serializeObject() {
  11. try {
  12. // 创建一个Person对象
  13. Person person = new Person("John Doe", 30);
  14. // 创建一个文件输出流
  15. FileOutputStream fileOut = new FileOutputStream("person.ser");
  16. // 创建一个对象输出流
  17. ObjectOutputStream out = new ObjectOutputStream(fileOut);
  18. // 将Person对象写入输出流
  19. out.writeObject(person);
  20. // 关闭输出流
  21. out.close();
  22. // 关闭文件输出流
  23. fileOut.close();
  24. System.out.println("Object serialized and saved to person.ser");
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. // 反序列化对象
  30. public static void deserializeObject() {
  31. try {
  32. // 创建一个文件输入流
  33. FileInputStream fileIn = new FileInputStream("person.ser");
  34. // 创建一个对象输入流
  35. ObjectInputStream in = new ObjectInputStream(fileIn);
  36. // 从输入流读取Person对象
  37. Person person = (Person) in.readObject();
  38. // 关闭输入流
  39. in.close();
  40. // 关闭文件输入流
  41. fileIn.close();
  42. // 打印读取到的Person对象
  43. System.out.println("Deserialized Object: " + person.toString());
  44. } catch (IOException e) {
  45. e.printStackTrace();
  46. } catch (ClassNotFoundException e) {
  47. e.printStackTrace();
  48. }
  49. }
  50. }
  51. class Person implements Serializable {
  52. private String name;
  53. private int age;
  54. public Person(String name, int age) {
  55. this.name = name;
  56. this.age = age;
  57. }
  58. public String getName() {
  59. return name;
  60. }
  61. public int getAge() {
  62. return age;
  63. }
  64. @Override
  65. public String toString() {
  66. return "Person [name=" + name + ", age=" + age + "]";
  67. }
  68. }

上述代码中,首先在serializeObject()方法中创建一个Person对象,并将其序列化并保存到名为"person.ser"的文件中。然后在deserializeObject()方法中从该文件中读取字节流,并将其反序列化为Person对象。最后,打印反序列化得到的Person对象。

这样,通过利用对象序列化,可以在Java中实现对输入输出的控制。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
梦月之神 关注 已关注

最近一次登录:2023-12-11 13:08:44   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图