欢迎访问北大青鸟鲁广校区~

  1. 加入收藏
  2. 设为主页
  3. 学校简介
北大青鸟鲁广校区

17740513250

三分钟了解北大青鸟

×
  • 数据加载中...

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实现序列化作用及实例#,宏鹏发布于北大青鸟鲁广校区。序列化作用:把内存中的对象转化为另一种形式,以供传输或存储。

专业老师指导

专业老师指导

赵老师

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

培训咨询客服

培训咨询客服

陈老师

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

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

大家都在看的大家都在看的Java开发

热门课程

更多>>
  • 数据加载中...
7天免费试学

7天课程免费试学

实战学习干货限时领取

行业解读+大咖授课+项目实操
10年以上业内强师集结,手把手带你蜕变精英!

点我咨询
×
在线咨询更多问题

如您有任何疑问
在线咨询随时为您解答或拨打咨询热线:13125006136

×
  • 姓 名*
  • 手 机*
  • QQ号/微信号
  • 所报学科 *
  • 其他备注
  • 验证码 获取验证码 *
  • 温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一报名服务。