JAVA SE.doc_第1页
JAVA SE.doc_第2页
JAVA SE.doc_第3页
JAVA SE.doc_第4页
JAVA SE.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaSE02 Day01Top 1. FileUtilsdeleteDirectory方法实现 2. FileUtilslistFile(File,String,boolean) 3. FileUtilscopyFile方法的实现 1 FileUtilsdeleteDirectory方法实现1.1 问题删除指定目录及其包含的所有内容。1.2 方案新建类FileUtils类,在类中添加方法deleteDirectory(File dir),该方法的参数dir表示要删除的目录:1. public static void deleteDirectory(File dir) 2. throws IOException 在deleteDirectory方法中添加判断dir目录是否存在的代码:1. if (!dir.exists() 2. throw new IllegalArgumentException(目录: 3. + dir + 不存在);4. 在deleteDirectory方法中添加判断dir是否为目录的代码:1. if (!dir.isDirectory() 2. throw new IllegalArgumentException(dir + 不是目录);3. 使用File类的listFiles(),获取一个目录下的所有文件和目录:1. File subs = dir.listFiles();递归删除dir及dir的子目录下的所有文件:1. if (subs != null & subs.length 0) 2. for (File sub : subs) 3. if (sub.isDirectory() 4. deleteDirectory(sub);5. else 6. System.out.println(sub);7. if (!sub.delete() 8. throw new IOException(无法删除文件: + sub);9. 10. 11. 12. 删除dir目录:1. if (!dir.delete() 2. throw new IOException(无法删除目录: + dir);3. 1.3 实现系统代码实现如下:1. public static void deleteDirectory(File dir) 2. throws IOException 3. if (!dir.exists() 4. throw new IllegalArgumentException(目录: 5. + dir + 不存在);6. 7. if (!dir.isDirectory() 8. throw new IllegalArgumentException(dir + 不是目录);9. 10. File subs = dir.listFiles();11. if (subs != null & subs.length 0) 12. for (File sub : subs) 13. if (sub.isDirectory() 14. deleteDirectory(sub);15. else 16. System.out.println(sub);17. if (!sub.delete() 18. throw new IOException(无法删除文件: + sub);19. 20. 21. 22. 23. System.out.println(dir);24. if (!dir.delete() 25. throw new IOException(无法删除目录: + dir);26. 27. 1.4 扩展列出指定目录下(包括其子目录)的所有文件。在FileUtils类中添加listDirectory(File dir)方法:1. public static void listDirectory(File dir) 2. throws IOException 使用递归列出指定dir目录及其子目录下的所有文件:1. File subs = dir.listFiles();2. if (subs != null & subs.length 0) 3. for (File sub : subs) 4. if (sub.isDirectory() 5. listDirectory(sub);6. else 7. System.out.println(sub);8. 9. 10. listDirectory方法完整代码如下:1. public static void listDirectory(File dir) 2. throws IOException 3. if (!dir.exists() 4. throw new IllegalArgumentException(目录: 5. + dir + 不存在);6. 7. if (!dir.isDirectory() 8. throw new IllegalArgumentException(dir + 不是目录);9. 10. File subs = dir.listFiles();11. if (subs != null & subs.length 0) 12. for (File sub : subs) 13. if (sub.isDirectory() 14. listDirectory(sub);15. else 16. System.out.println(sub);17. 18. 19. 20. FileUtils类的代码如下:1. public class FileUtils 2. /*3. * 列出指定目录下(包括其子目录)的所有文件4. * param dir 5. * throws IOException6. */7. public static void listDirectory(File dir) 8. throws IOException 9. if (!dir.exists() 10. throw new IllegalArgumentException(目录: + 11. dir + 不存在);12. 13. if (!dir.isDirectory() 14. throw new IllegalArgumentException(dir + 不是目录);15. 16. File subs = dir.listFiles();17. if (subs != null & subs.length 0) 18. for (File sub : subs) 19. if (sub.isDirectory() 20. listDirectory(sub);21. else 22. System.out.println(sub);23. 24. 25. 26.27. 28. /*29. * 删除指定目录及其包含的所有内容30. * param dir31. * throws IOException32. */33. public static void deleteDirectory(File dir) 34. throws IOException 35. if (!dir.exists() 36. throw new IllegalArgumentException(目录: + 37. dir + 不存在);38. 39. if (!dir.isDirectory() 40. throw new IllegalArgumentException(dir + 不是目录);41. 42. File subs = dir.listFiles();43. if (subs != null & subs.length 0) 44. for (File sub : subs) 45. if (sub.isDirectory() 46. deleteDirectory(sub);47. else 48. System.out.println(sub);49. if (!sub.delete() 50. throw new IOException(无法删除文件: + sub);51. 52. 53. 54. 55. System.out.println(dir);56. if (!dir.delete() 57. throw new IOException(无法删除目录: + dir);58. 59. 60. 2 FileUtilslistFile(File,String,boolean)2.1 问题列出指定目录下指定扩展名的所有文件。用户可以指定多个扩展名;用户也可以选择是否列出子目录下的文件。2.2 方案在FileUtils类中添加方法listFile(File dir,FileFilter ff,boolean recursive)方法,把dir目录中经过ff过滤的文件添加到List的对象中存储,使用recursive判断是否过滤子目录中的文件添加到 List的对象中。1. private static List listFile(File dir, FileFilter ff,2. boolean recursive) 3. List list = new ArrayList();4. File subs = dir.listFiles(ff);5. if (subs != null & subs.length 0) 6. for (File sub : subs) 7. if (sub.isFile() /如果是文件8. list.add(sub);/添加文件到list中9. else if (recursive) /是否获取子目录中的文件10. /添加子目录中的经过过滤的所有文件添加到list11. list.addAll(listFile(sub, ff, true);12. 13. 14. 15. return list;16. 在FileUtils类中添加方法listFile(File,String,boolean),dir表示指定的目录,extendsions表示多个扩展名,recursive表示是否列出子目录中的文件:1. public static List listFile(File dir, 2. final String extensions,boolean recursive) 3. 判断扩展名信息,如果无扩展名信息,FileFilter的accept方法返回true,相当于不进行过滤:1. if (extensions = null | extensions.length = 0) 2. ff = new FileFilter() 3. Override4. public boolean accept(File pathname) 5. return true;6. 7. ;8. 扩展名有信息的情况,使用FileFilter类的accept方法进行文件过滤:1. ff = new FileFilter() 2. Override3. public boolean accept(File pathname) 4. if (pathname.isDirectory()5. return true;6. String name = pathname.getName();7. for (String ext : extensions) 8. if (name.endsWith(ext) 9. return true;10. 11. 12. return false;13. 14. ;15. 2.3 实现系统代码实现如下所示:1. private static List listFile(File dir, FileFilter ff,2. boolean recursive) 3. List list = new ArrayList();4. File subs = dir.listFiles(ff);5. if (subs != null & subs.length 0) 6. for (File sub : subs) 7. if (sub.isFile() /如果是文件8. list.add(sub);/添加文件到list中9. else if (recursive) /是否去除子目录中的文件10. /添加子目录中的经过过滤的所有文件添加到list11. list.addAll(listFile(sub, ff, true);12. 13. 14. 15. return list;16. 17. public static List listFile(File dir, final String filename,18. boolean recursive) 19. if (!dir.exists() 20. throw new IllegalArgumentException(目录: + dir + 21. 不存在);22. 23.24. if (!dir.isDirectory() 25. throw new IllegalArgumentException(dir + 不是目录);26. 27. FileFilter ff = null;28. if (filename = null | filename.length() = 0) 29. ff = new FileFilter() 30. Override31. public boolean accept(File pathname) 32. return true;33. 34. ;35. else 36. ff = new FileFilter() 37. Override38. public boolean accept(File pathname) 39. if (pathname.isDirectory()40. return true;41. String name = pathname.getName();42. if (name.indexOf(filename) != -1)43. return true;44. else45. return false;46. 47. ;48. 49. return listFile(dir, ff, recursive);50. 2.4 扩展列出指定目录下指定扩展名的所有文件。用户只能指定一个扩展名;用户也可以选择是否列出子目录下的文件,过滤出来的所有文件用Java中的容器进行存储。在FileUtils类中添加重载的listFile(File dir, final String filename, boolean recursive)方法:1. public static List listFile(File dir, 2. final String filename, boolean recursive) 3. if (!dir.exists() 4. throw new IllegalArgumentException(目录: + dir 5. + 不存在);6. 7. if (!dir.isDirectory() 8. throw new IllegalArgumentException(dir + 不是目录);9. 10. FileFilter ff = null;11. if (filename = null | filename.length() = 0) 12. ff = new FileFilter() 13. Override14. public boolean accept(File pathname) 15. return true;16. 17. ;18. else 19. ff = new FileFilter() 20. Override21. public boolean accept(File pathname) 22. if (pathname.isDirectory()23. return true;24. String name = pathname.getName();25. if (name.indexOf(filename) != -1)26. return true;27. else28. return false;29. 30. ;31. 32. return listFile(dir, ff, recursive);33. FileUtils类代码如下:1. public class FileUtils 2.3. /*4. * 列出指定目录下(包括其子目录)的所有文件5. * 6. * param dir7. * throws IOException8. */9. public static void listDirectory(File dir) 10. throws IOException 11. if (!dir.exists() 12. throw new IllegalArgumentException(目录: + dir 13. + 不存在);14. 15.16. if (!dir.isDirectory() 17. throw new IllegalArgumentException(dir + 不是目录);18. 19. File subs = dir.listFiles();20. if (subs != null & subs.length 0) 21. for (File sub : subs) 22. if (sub.isDirectory() 23. listDirectory(sub);24. else 25. System.out.println(sub);26. 27. 28. 29.30. 31.32. /*33. * 删除指定目录及其包含的所有内容34. * 35. * param dir36. * throws IOException37. */38. public static void deleteDirectory(File dir) 39. throws IOException 40. if (!dir.exists() 41. throw new IllegalArgumentException(目录: + dir +42. 不存在);43. 44.45. if (!dir.isDirectory() 46. throw new IllegalArgumentException(dir + 不是目录);47. 48.49. File subs = dir.listFiles();50. if (subs != null & subs.length 0) 51. for (File sub : subs) 52. if (sub.isDirectory() 53. deleteDirectory(sub);54. else 55. System.out.println(sub);56. if (!sub.delete() 57. throw new IOException(无法删除文件: + sub);58. 59. 60. 61. 62. System.out.println(dir);63. if (!dir.delete() 64. throw new IOException(无法删除目录: + dir);65. 66. 67.68. /*69. * 列出指定目录下指定扩展名的所有文件70. * param dir71. * param extensions72. * param recursive73. * return74. */75. public static List listFile(File dir, 76. final String extensions, boolean recursive) 77. if (!dir.exists() 78. throw new IllegalArgumentException(目录: + dir + 79. 不存在);80. 81.82. if (!dir.isDirectory() 83. throw new IllegalArgumentException(dir + 不是目录);84. 85. FileFilter ff = null;86. if (extensions = null | extensions.length = 0) 87. ff = new FileFilter() 88. Override89. public boolean accept(File pathname) 90. return true;91. 92. ;93. else 94. ff = new FileFilter() 95. Override96. public boolean accept(File pathname) 97. if (pathname.isDirectory()98. return true;99. String name = pathname.getName();100. for (String ext : extensions) 101. if (name.endsWith(ext) 102. return true;103. 104. 105. return false;106. 107. ;108. 109. return listFile(dir, ff, recursive);110. 111. public static List listFile(File dir, 112. final String filename, boolean recursive) 113. if (!dir.exists() 114. throw new IllegalArgumentException(目录: + dir 115. + 不存在);116. 117. if (!dir.isDirectory() 118. throw new IllegalArgumentException(dir + 不是目录);119. 120. FileFilter ff = null;121. if (filename = null | filename.length() = 0) 122. ff = new FileFilter() 123. Override124. public boolean accept(File pathname) 125. return true;126. 127. ;128. else 129. ff = new FileFilter() 130. Override131. public boolean accept(File pathname) 132. if (pathname.isDirectory()133. return true;134. String name = pathname.getName();135. if (name.indexOf(filename) != -1)136. return true;137. else138. return false;139. 140. ;141. 142. return listFile(dir, ff, recursive);143. 144.145. private static List listFile(File dir, FileFilter ff,146. boolean recursive) 147. List list = new ArrayList();148. File subs = dir.listFiles(ff);149. if (subs != null & subs.length 0) 150. for (File sub : subs) 151. if (sub.isFile() 152. list.add(sub);153. else if (recursive) 154. list.addAll(listFile(sub, ff, true);155. 156. 157. 158. return list;159. 160. 3 FileUtilscopyFile方法的实现3.1 问题复制文件。3.2 方案在FileUtils类中添加方法copyFile(File srcFile, File destFile),srcFile表示被拷贝的文件,destFile表示拷贝成功的文件:1. public static void copyFile(File srcFile, File destFile) 2. throws IOException 3. 使用RandomAccessFile从srcFile文件中读取内容,写入destFile文件中。RandomAccessFile类 write(byte b, int off, int len)方法表示从缓冲数组buffer中,从偏移量off开始,写len个字节到文件。1. while (len = srcRaf.read(buffer) != -1) 2. destRaf.write(buffer, 0, len);3. 3.3 实现系统代码实现如下:1. public static void copyFile(File srcFile, File destFile) 2. throws IOException 3. if (!srcFile.exists() 4. throw new IllegalArgumentException(文件: + srcFile 5. + 不存在);6. 7. if (!srcFile.isFile() 8. throw new IllegalArgumentException(srcFile + 9. 不是文件);10. 11. RandomAccessFile srcRaf = new RandomAccessFile(srcFile,12. r);13. if (!destFile.exists() 14. if (!destFile.createNewFile()15. throw new IOException(无法创建文件: + destFile);16. 17. RandomAccessFile destRaf = new RandomAccessFile(18. destFile, rw);19. byte buffer = new byte8 * 1024;20. int len = -1;21. while (len = srcRaf.read(buffer) != -1) 22. destRaf.write(buffer, 0, len);23. 24. srcRaf.close();25. destRaf.close();26. 3.4 扩展复制目录,及其包含的所有内容。在FileUtils类中添加方法copyDirectory(File srcDir, File destDir)实现目录的拷贝,srcDir表示被拷贝的目录,destDir表示拷贝完成的目录:1. public static void copyDirectory(File src

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论