北大青鸟

网站首页 > 常见IT技术问题 > Java开发 >

站内公告

Java实现序列化作用及实例

责任编辑:宏鹏来源:武汉北大青鸟鲁广校区时间:2013-02-20 10:19:58
导读:序列化作用:把内存中的对象转化为另一种形式,以供传输或存储。

(一)序列化作用:

把内存中的对象转化为另一种形式,以供传输或存储。

(二)序列化前提:

(1)要序列化对象必须是可序列化的,即必须实现 Serializable 接口。

(2)要序列化对象的属性也都是可序列化的。

(3)要序列化对象引用的对象也必须是可序列化的,如:要序列化一个 HashMap 实例,需要把放入到HashMap中的对象也都序列化。

(4)要序列化一个内部类,该内部类必须可序列化,并且外部类也必须可序列化。

(5)基本数据类型都是可以序列化的。

(三)序列化举例:

下面是一个User类,演示了把一个User实例写入文件,然后在再文件中读出。

Java代码

1. package serialize;

2.

3. import java.io.FileInputStream;

4. import java.io.FileOutputStream;

5. import java.io.IOException;

6. import java.io.ObjectInputStream;

7. import java.io.ObjectOutputStream;

8. import java.io.Serializable;

9.

10. public class User implements Serializable {

11. private static final long serialVersionUID = 2143L;

12.

13. private String name;

14. private int age;

15.

16. public String getName() {

17. return name;

18. }

19.

20. public void setName(String name) {

21. this.name = name;

22. }

23.

24. public int getAge() {

25. return age;

26. }

27.

28. public void setAge(int age) {

29. this.age = age;

30. }

31.

32. public User(String name, int age) {

33. this.name = name;

34. this.age = age;

35. }

36.

37. /**

38. * @todo 将一个可以序列化的对象写入文件

39. * @param obj

40. * 要保存的对象

41. * @param fileName

42. * 目标文件

43. */

44. public void writeToFile(Object obj, String fileName) {

45. ObjectOutputStream oos = null;

46. FileOutputStream fos = null;

47. try {

48. fos = new FileOutputStream(fileName);

49. oos = new ObjectOutputStream(fos);

50. oos.writeObject(obj);

51. oos.flush();

52. System.out.println("write ok!");

53. } catch (Exception e) {

54. System.out.println("write false! The error : " + e.getStackTrace());

55.

56. } finally {

57. //关闭文件流

58. try {

59. if (oos != null) {

60. oos.close();

61. }

62. if(fos != null){

63. fos.close();

64. }

65. } catch (IOException e) {

66. System.out.println("close flus false! The error : " + e.getStackTrace());

67. }

68. }

69. }

70.

71. /**

72. * @param fileName

73. * 保存对象的文件

74. * @return 从文件中得到的对象

75. */

76. public Object getObjFromFile(String fileName) {

77. Object obj = null;

78. FileInputStream fis = null;

79. ObjectInputStream ois = null;

80. try {

81. fis = new FileInputStream(fileName);

82. ois = new ObjectInputStream(fis);

83. obj = ois.readObject();

84. ois.close();

85. System.out.println("read ok!");

86. } catch (Exception e) {

87. e.printStackTrace();

88. } finally {

89. //关闭文件流

90. try {

91. if (ois != null) {

92. ois.close();

93. }

94. if(fis != null){

95. fis.close();

96. }

97. } catch (IOException e) {

98. System.out.println("close flus false! The error : " + e.getStackTrace());

99. }

100. }

101. return obj;

102. }

103.

104. public static void main(String[] args) {

105.

106. String fileName = "c://user.txt"; // 保存对象的文件

107. User user = new User("@pony", 28); // 创建一个User对象

108. user.writeToFile(user, fileName); // 将对象写入文件

109. User u = (User) (user.getObjFromFile(fileName)); // 从文件中取得对象

110. // 输出对象名

111. if (u != null)

112. System.out.println("ok, get the user object from the file. /nThe user's name is : " + u.name);

113. }

114.

115. }

本文标题:Java实现序列化作用及实例,责任编辑:宏鹏,来源:武汉北大青鸟鲁广校区栏目,于2013-02-20 10:19:58发布于北大青鸟鲁广校区。序列化作用:把内存中的对象转化为另一种形式,以供传输或存储。

专业老师指导

赵老师

赵老师

从事IT教育培训十年有余,致力于帮助广大学子找到适合自己的专业

立即在线咨询

培训咨询客服

陈老师

陈老师

IT培训专业客服,用自己的真诚解决了无数学子的困惑

立即在线咨询

本文地址:https://m.027hpedu.com/wenda/java/2297.html

文章标题:Java实现序列化作用及实例

上一篇:编程开发人员需要知道的安编码实践

下一篇:学习Java好不好?前途怎么样?

热点关注

推荐Java开发

热门Java开发

预约你的精彩未来

预约将免费领取7天课程体验卡

-------请选择试预约课程-------

JAVA
WEB前端
PHP
UI设计
Python
电子商务
视频剪辑
大数据工程师
平面设计

83345人已领取

全国百余家校区

只为您方便就学

北大青鸟鲁广校区

北大青鸟鲁广校区

武汉市洪山区珞喻路724号(地铁二号线光谷广场站F口出)

预约到校
领取学习大礼包

首页

热门课程

视频网课

新闻资讯

关于学校

联系学校

预约选课申请

  • 预约时间

    请选择预约时间

  • 预约课程

    请选择预约课程

  • 姓   名
  • 手机号
  • QQ 号
  • 微信号

添加老师微信号

专业老师24小时1对1学习指导

定制专属于你的专属学习方案

微信号:17740513250

复制老师的微信号

复制成功啦

快去微信添加老师为好友吧~

北大青鸟小青

微信号:17740513250

北大青鸟小青

微信号:17740513250

设置备注
小主知道啦