A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT_JM 中级黑马   /  2013-10-10 23:55  /  1206 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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



评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1 鼓励。0.0

查看全部评分

1 个回复

倒序浏览
急速回帖!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马