首页 > 代码库 > File类——renameTo()将文件夹内的所有指定类型文件 移动到另一个文件夹内

File类——renameTo()将文件夹内的所有指定类型文件 移动到另一个文件夹内

 * 由于   张孝祥-7K月薪面试题破解之一_交通灯管理系统视频教程 文件夹下 的视频文件都存放在每个子文件夹中

 * 需求:将所有视频文件全部移动到  张孝祥-7K月薪面试题破解之一_交通灯管理系统视频教程文件夹下  原来存放视频的子文件夹删除

public class moveFiles {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f = new File("D:\\BaiduYunDownload\\张孝祥-7K月薪面试题破解之一_交通灯管理系统视频教程");
//		File f = new File("D:\\BaiduYunDownload\\传智播客_张孝祥_Java多线程与并发库高级应用视频教程下载");
		if (f.exists())
			moveFiles2(f, f.getPath());
		System.out.println("done");
	}

	public static void moveFiles(File f, String path) {
		File[] files = f.listFiles();
		String addName = "";
		// 先判断 文件夹的名称是否含有"_交通",然后在 获取角标 否则indexOf会返回-1出现substring(-1)出现异常
		if (f.getName().contains("_交通")) {
			int index = f.getName().indexOf("_交通");
//			int index = f.getName().indexOf("祥_")+1;
			addName = f.getName().substring(index);
		}
		for (File file : files) {
			if (file.isDirectory())
				moveFiles(file, path);
			else {
				if (file.getName().endsWith(".avi")) {
					File dest = new File(path, file.getName().replace(".",
							addName + "."));
					file.renameTo(dest);
					System.out.println(dest.getName());
				} else
					file.delete();// 删除多余文件
			}
			file.delete();// 删除空文件夹
		}
	}

	// 如果需要保留 不包含"_交通"的文件夹的话 代码如下
	public static void moveFiles2(File f, String path) {
		File[] files = f.listFiles();
		int index = f.getName().indexOf("_交通");
		String addName = f.getName().substring(index);
		for (File file : files) {
			System.out.println(file.getName());
			if (file.isDirectory())
				if (file.getName().contains("_交通"))// 在这里判断的话可以保证
													// 除最外层文件外每个f对象都包含"_交通"
					moveFiles(file, path);
				else {
					if (file.getName().endsWith(".avi")) {
						File dest = new File(path, file.getName().replace(".",
								addName + "."));
						file.renameTo(dest);
						// System.out.println("生成:"+dest.getName());
					} else {
						System.out.println(file.delete() + "..删除的文件是."
								+ file.getName());// 删除多余文件
					}
				}
			// 删除空文件夹  当且仅当成功删除文件或目录时,返回true;否则返回false
			System.out.println(file.delete() + ",,删除的文件夹是:" + file.getName());
		}
	}
}


本文出自 “要么拼命,要么滚回去!” 博客,请务必保留此出处http://jiangzuun2014.blog.51cto.com/8732469/1532184