分析1、作为内部内进行序列化是,他的类也要实现Serializable接口。复制代码
- 1. /*
- 2. 需求:
- 3. 将c盘一个文本文件复制到e盘、
- 4. 复制的原理:
- 5. 其实就是将c盘下的文件数据存储到e盘的一个文件中。
- 6. 步骤:
- 7. 1、在e盘创建一个文件。用于存储c盘文件中的数据。
- 8. 2、定义读取流和c盘文件关联。
- 9. 3、通过不断的读写完成数据存储。
- 10. 4、关闭资源。
- 11. */
- 12. import java.io.*;
- 13.
- 14. class ReaderWriterTest
- 15. {
- 16. publicstatic void main(String[] args)
- 17. {
- 18. //调用复制方法
- 19. //copy_1();
- 20. copy_2();
- 21. }
- 22. //用第一种读取方式进行复制
- 23. publicstatic void copy_1()
- 24. {
- 25. FileWriterfw=null;
- 26. FileReaderfr=null;
- 27. try
- 28. {
- 29. //关联读取和写入的文件
- 30. fw=newFileWriter("E:\\HelloWorld.java");
- 31. fr=newFileReader("C:\\HelloWorld.java");
- 32. for(int ch=0;(ch=fr.read())!=-1 ; )
- 33. {
- 34. fw.write(ch);//一个字符一个字符写入
- 35. }
- 36. }
- 37. catch(IOException e)
- 38. {
- 39. thrownew RuntimeException("读写失败");
- 40. }
- 41. finally
- 42. {
- 43. if(fr!=null)
- 44. try
- 45. {
- 46. fr.close();//对读取流和写入流分别关闭
- 47. }
- 48. catch(IOException e)
- 49. {
- 50. }
- 51. if(fw!=null)
- 52. try
- 53. {
- 54. fw.close();
- 55. }
- 56. catch(IOException e)
- 57. {
- 58. }
- 59. }
- 60. }
- 61.
- 62. //第二种读取方式进行复制
- 63. publicstatic void copy_2()
- 64. {
- 65. FileWriterfw=null;
- 66. FileReaderfr=null;
- 67. try
- 68. {
- 69. //关联读取和写入的文件
- 70. fw=newFileWriter("E:\\HelloWorld.java");
- 71. fr=newFileReader("C:\\HelloWorld.java");
- 72. char[]arr=new char[1024];
- 73. for(int len=0;(len=fr.read(arr))!=-1 ; )
- 74. {
- 75. fw.write(arr,0,len);//利用数组一次存入数组中的字符
- 76. }
- 77. }
- 78. catch(IOException e)
- 79. {
- 80. thrownew RuntimeException("读写失败");
- 81. }
- 82. finally
- 83. {
- 84. try
- 85. {
- 86. if(fr!=null)
- 87. fr.close();
- 88. }
- 89. catch(IOException e)
- 90. {
- 91. }
- 92. finally
- 93. {
- 94. if(fw!=null)
- 95. try
- 96. {
- 97. fw.close();
- 98. }
- 99. catch(IOException e)
- 100. {
- 101. }
- 102. }
- 103. }
- 104. }
- 105. }
2、读出来的对象和写入的对象不是同一个对象(也就是进行“==”返回false),但属性的值相等(例子中的i相等)。
3、可以使用transient关键字进行标注那些字段不用序列化操作。
4、序列话操作不会调用构造函数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |