java文件操作类——递归删除,显示子目录
2013-08-31 19:25
302 查看
package day01; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; public class FileUtils { /** * 列出指定目录下(包括其子目录)的所有文件 * * @param dir * @throws IOException */ public static void listDirectory(File dir) { if (!dir.exists()) { throw new IllegalArgumentException("目录:" + dir + "不存在"); } if (!dir.isDirectory()) { throw new IllegalArgumentException(dir + "不是目录"); } File[] subs = dir.listFiles(); if (subs != null && subs.length > 0) { for (File sub : subs) { if (sub.isDirectory()) { listDirectory(sub); } else { System.out.println(sub); } } } } /** * 删除指定目录及其包含的所有内容 * * @param dir * @throws IOException */ public static void deleteDirectory(File dir) throws IOException { if (!dir.exists()) { throw new IllegalArgumentException("目录:" + dir + "不存在"); } if (!dir.isDirectory()) { throw new IllegalArgumentException(dir + "不是目录"); } File[] subs = dir.listFiles(); if (subs != null && subs.length > 0) { for (File sub : subs) { if (sub.isDirectory()) { deleteDirectory(sub); } else { System.out.println(sub); if (!sub.delete()) { throw new IOException("无法删除文件:" + sub); } } } } System.out.println(dir); if (!dir.delete()) { throw new IOException("无法删除目录:" + dir); } } /** * 列出指定目录下指定扩展名的所有文件 * * @param dir * @param extensions * @param recursive * @return */ public static List<File> listFile(File dir, final String[] extensions, boolean recursive) { if (!dir.exists()) { throw new IllegalArgumentException("目录:" + dir + "不存在"); } if (!dir.isDirectory()) { throw new IllegalArgumentException(dir + "不是目录"); } FileFilter ff = null; if (extensions == null || extensions.length == 0) { ff = new FileFilter() { @Override public boolean accept(File pathname) { return true; } }; } else { ff = new FileFilter() { @Override public boolean accept(File pathname) { if (pathname.isDirectory()) return true; String name = pathname.getName(); for (String ext : extensions) { if (name.endsWith(ext)) { return true; } } return false; } }; } return listFile(dir, ff, recursive); } public static List<File> listFile(File dir, final String filename, boolean recursive) { if (!dir.exists()) { throw new IllegalArgumentException("目录:" + dir + "不存在"); } if (!dir.isDirectory()) { throw new IllegalArgumentException(dir + "不是目录"); } FileFilter ff = null; if (filename == null || filename.length() == 0) { ff = new FileFilter() { @Override public boolean accept(File pathname) { return true; } }; } else { ff = new FileFilter() { @Override public boolean accept(File pathname) { if (pathname.isDirectory()) return true; String name = pathname.getName(); if (name.indexOf(filename) != -1) return true; else return false; } }; } return listFile(dir, ff, recursive); } private static List<File> listFile(File dir, FileFilter ff, boolean recursive) { List<File> list = new ArrayList<File>(); File[] subs = dir.listFiles(ff); if (subs != null && subs.length > 0) { for (File sub : subs) { if (sub.isFile()) { list.add(sub); } else if (recursive) { list.addAll(listFile(sub, ff, true)); } } } return list; } public static void copyFile(File srcFile, File destFile) throws IOException { if (!srcFile.exists()) { throw new IllegalArgumentException("文件:" + srcFile + "不存在"); } if (!srcFile.isFile()) { throw new IllegalArgumentException(srcFile + "不是文件"); } RandomAccessFile srcRaf = new RandomAccessFile(srcFile, "r"); if (!destFile.exists()) { if (!destFile.createNewFile()) throw new IOException("无法创建文件:" + destFile); } RandomAccessFile destRaf = new RandomAccessFile(destFile, "rw"); byte[] buffer = new byte[8 * 1024]; int len = -1; while ((len = srcRaf.read(buffer)) != -1) { destRaf.write(buffer, 0, len); } srcRaf.close(); destRaf.close(); } public static void copyDirectory(File srcDir, File destDir) throws IOException { if (!srcDir.exists()) { throw new IllegalArgumentException("文件:" + srcDir + "不存在"); } if (!srcDir.isDirectory()) { throw new IllegalArgumentException(srcDir + "不是目录"); } if (!destDir.exists()) { if (!destDir.mkdir()) throw new IOException("无法创建目录:" + destDir); } File[] subs = srcDir.listFiles(); if (subs != null && subs.length > 0) { for (File sub : subs) { if (sub.isFile()) { copyFile(sub, new File(destDir, sub.getName())); } else if (sub.isDirectory()) { copyDirectory(sub, new File(destDir, sub.getName())); } } } } }
相关文章推荐
- java删除文件夹(递归删除其子目录的所有文件夹及文件)
- 用rm递归递归删除子目录下所有.o后缀文件
- Java文件--递归删除
- Java递归删除目录及目录下的文件
- java通过递归调用删除文件夹下所有文件
- Java 利用递归删除文件以及文件夹
- java递归实现文件的删除和拷贝
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
- java编译提示错误的类文件,类文件包含错误的类,请删除该文件或确保该文件位于正确的类路径子目录中
- 学习笔记 - java递归删除一个文件夹及里面的所有文件
- JAVA利用递归删除文件和文件夹
- java删除递归文件夹及文件夹下文件
- JAVA递归删除目录及包含的全部文件
- Java中通过递归调用删除文件夹下所有文件
- Java 新建、复制、删除、移动文件(夹)操作类
- java递归删除文件及目录
- Java递归删除文件
- java递归实现文件的删除和拷贝
- java递归删除文件或文件夹
- 递归解压当前目录以及子目录下的所有压缩文件,并删除源文件