JavaUtils - 文件操作
2014-03-31 21:05
239 查看
public class FileUtils { /** * 删除指定的目录或文件 * * @param path * 要删除的目录或文件 * @return 删除成功返回 true,否则返回 false。 */ public static boolean deleteFolder(String path) { boolean flag = false; File file = new File(path); // 判断目录或文件是否存在 if (file.exists()) { // 判断是否为文件 if (file.isFile()) { // 为文件时调用删除文件方法 return deleteFile(path); } else { // 为目录时调用删除目录方法 return deleteDirectory(path); } } else { return flag; } } /** * 删除单个文件 * * @param path * 要删除文件的文件名 * @return 单个文件删除成功返回true,否则返回false */ public static boolean deleteFile(String path) { boolean flag = false; File file = new File(path); // 路径为文件且不为空则进行删除 if (file.isFile() && file.exists()) { file.delete(); flag = true; } return flag; } /** * 删除目录以及目录下的文件 * * @param path * 要删除目录的文件路径 * * @return 目录删除成功返回true,否则返回false */ public static boolean deleteDirectory(String path) { // 如果path不以文件分隔符结尾,自动添加文件分隔符 if (!path.endsWith(File.separator)) { path = path + File.separator; } File dirFile = new File(path); // 如果dir对应的文件不存在,或者不是一个目录,则退出 if (!dirFile.exists() || !dirFile.isDirectory()) { return false; } boolean flag = true; File[] files = dirFile.listFiles(); // 删除文件夹下的所有文件(包括子目录) for (int i = 0; i < files.length; i++) { // 删除子文件 if (files[i].isFile()) { flag = deleteFile(files[i].getAbsolutePath()); if (!flag) break; } else { // 删除子目录的递归调用,循环删除 flag = deleteDirectory(files[i].getAbsolutePath()); if (!flag) break; } } if (!flag) return false; // 删除当前目录 if (dirFile.delete()) { return true; } else { return false; } } /** * 复制目录 * * @param oldPath * 需要复制的目录 * @param newPath * 目标目录 */ public static boolean copyDirectory(String oldPath, String newPath) { BufferedReader br = null; BufferedWriter bw = null; try { (new File(newPath)).mkdirs(); // 如果目录不存在 则建立新目录 File a = new File(oldPath); String[] file = a.list(); File temp = null; for (int i = 0; i < file.length; i++) { if (oldPath.endsWith(File.separator)) { temp = new File(oldPath + file[i]); } else { temp = new File(oldPath + File.separator + file[i]); } if (temp.isFile()) { br = new BufferedReader(new InputStreamReader(new FileInputStream( temp))); bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( newPath + File.separator + (temp.getName()).toString()))); String data; while ((data = br.readLine()) != null) { bw.write(data, 0, data.length()); } bw.flush(); } if (temp.isDirectory()) {// 如果是子文件夹 copyDirectory(oldPath + File.separator + file[i], newPath + File.separator + file[i]); } } return true; } catch (Exception e1) { System.out.println("复制整个文件夹内容操作出错"); e1.printStackTrace(); return false; } finally { try { if (br != null) { br.close(); } if (bw != null) { bw.close(); } } catch (Exception e2) { } } } /** * * 测试方法 * */ public static void main(String[] args) { FileUtils.deleteFolder("E:/testFolder"); } }
相关文章推荐
- 深入理解Java内存模型(四)——volatile
- 在spring.xml中向类里的成员变量注入得注意什么
- 详解Struts2标签库
- 学JAVA (MARS)中2014年3月31日17:35:08
- java关键词
- 【Spring+MAVEN+IBatis+MySQL】简单例子
- java里的Garbage Collection
- Struts2配置文件Struts.xml示范
- Struts中的action传递参数到下个action,jsp时是使用get方法还是set方法
- Struts2中过滤器和拦截器的区别
- 利用Java 3D技术播放动画之JMF技术
- java并发编程实践学习(一)java的类锁和对象锁
- 常用Java静态代码分析工具的分析与比较
- javaWeb开发之filter
- java中的匿名内部类总结
- Java性能优化系列之五--JavaIO
- Java性能优化系列之四--Java内存管理与垃圾回收机制详解
- [学习笔记]小型java游戏引擎_1
- Eclipse常用快捷键
- Java性能优化系列之三--并发程序设计详解