FileOperate

package util;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileOperate {
	private static  FileOperate instance=new FileOperate();
	public static FileOperate getInstance(){
		return instance;
	}
	/*
	 * 创建新文件
	 */
	public boolean createNewFile(File f){
		boolean flag=false;
		if(f.exists()){
			System.out.println("创建文件失败,文件 "+f.getName()+" 已存在");
			return flag;
		}
				try {
					flag=f.createNewFile();
				} catch (IOException e) {
					e.printStackTrace();
				}
				if(flag){
					System.out.println("创建文件  "+f.getName()+" 成功!");
				}else{
					System.out.println("创建文件"+f.getName()+"失败!");
				}
			
		return flag;
	}
	/*
	 * 创建新目录
	 */
	public boolean createNewDir(File f){
		boolean flag=false;
		if(f.exists()){
			System.out.println("创建目录失败,目录 "+f.getName()+" 已存在");
			return flag;
		}
		flag=f.mkdirs();
		if(flag){
			System.out.println("创建目录"+f.getName()+"成功");
		}else{
			System.out.println("创建目录"+f.getName()+"失败");
		}
		return flag;
	}
	/*
	 * 将src文件重命名为targetName文件名
	 */
	public boolean rename(File src,String targetName){
		boolean flag=false;
		if(!src.exists()){
			System.out.println("文件"+src.getAbsolutePath()+"不存在");
			return flag;
		}
		if("".equals(targetName)){
			System.out.println("文件名不能为空");
		}
		String parent=src.getParent();
		File temp=new File(parent+File.separator+targetName);
			if(!(flag=src.renameTo(temp))){
				System.out.println(parent+"下已经存在文件"+targetName);
				return flag;
			}else{
				System.out.println("文件"+src.getAbsolutePath()+"重命名为:"+targetName+"成功");
				return flag;
			}
	}
	/*
	 * 根据文件名查找目录dir下的文件
	 */
	public List<File> findFile(File dir,String fileName,boolean isRecursion){
		List<File> list=new ArrayList<File>();
		if(!dir.exists())
			System.out.println("目录"+dir.getAbsolutePath()+"不存在");
		if(!dir.isDirectory())
			System.out.println(dir.getAbsolutePath()+"不是目录");
		if(isRecursion){
			findFileAction(dir,fileName,list);
		}else{
			File[] files=dir.listFiles();
			for(File file:files){
				if(file.getName().equals(fileName)){
					list.add(file);
				}
			}
		}
		return list;
	}
	/*
	 * 递归查找文件
	 */
	private void findFileAction(File f,String fileName,List<File> list){
		if(f.isFile()){
			if(f.getName().equals(fileName)){
				list.add(f);
			}
		}else if(f.isDirectory()){
			File[] files=f.listFiles();
			for(File file:files){
				findFileAction(file,fileName,list);
			}
		}
	}
	/*
	 * 查找目录dir下后缀为suffix的文件
	 */
	public List<File> findFileBySuffix(File dir,String suffix,boolean isRecursion){
		List<File> list=new ArrayList<File>();
		if(!dir.exists())
			System.out.println("目录"+dir.getAbsolutePath()+"不存在");
		if(!dir.isDirectory())
			System.out.println(dir.getAbsolutePath()+"不是目录");
		if(isRecursion){
			findAssignFileAction(dir,suffix,list);
		}else{
			File[] files=dir.listFiles(new MyFileFilter(suffix));
			for(File file:files){
				if(file.getName().endsWith(suffix)){
					list.add(file);
				}
			}
		}
		return list;
	}
	/*
	 * 过滤指定后缀文件
	 */
	class MyFileFilter implements FilenameFilter{
		private String suffix;
		public MyFileFilter(String suffix){
			this.suffix=suffix;
		}
		/* 
         * dir  表示当前处理的这个文件是在哪个目录里面的 
         * name 表示当前处理的文件名或目录名 
         */  
		public boolean accept(File dir, String name) {
			File temp=new File(dir.getAbsolutePath()+File.separator+name);
			if(name.endsWith(suffix)||temp.isDirectory())
				return true;
			else
				return false;
		}
		
	}
	/*
	 * 递归查找指定后缀文件
	 */
	private void findAssignFileAction(File f,String suffix,List<File> list){
		if(f.isFile()){
			if(f.getName().endsWith(suffix)){
				list.add(f);
			}
		}else if(f.isDirectory()){
			File[] files=f.listFiles(new MyFileFilter(suffix));
			for(File file:files){
				findAssignFileAction(file,suffix,list);
			}
		}
	}
	/*
	 * 将文件src移动到目录dir下
	 */
	public boolean moveFile(File src,File dir ,boolean isCover){
		boolean flag=false;
		if(!src.exists()){
			System.out.println("文件"+src.getAbsolutePath()+"不存在");
			return flag;
		}
		if(!dir.exists()){
			System.out.println("目标目录"+dir.getAbsolutePath()+"不存在");
			return flag;
		}
		if(!dir.isDirectory()){
			System.out.println(dir.getAbsolutePath()+"不是目录");
			return flag;
		}
		List<File> list=this.findFile(dir, src.getName(), false);
		if(list.size()>0){
			if(isCover){
				list.get(0).delete();
				File temp=new File(dir.getAbsolutePath()+File.separator+src.getName());
				flag=src.renameTo(temp);
				if(flag){
					System.out.println(src.getAbsolutePath()+"移动到"+dir.getAbsolutePath()+"下成功");
				}else{
					System.out.println(src.getAbsolutePath()+"移动到"+dir.getAbsolutePath()+"下失败");
				}
			}else{
				System.out.println("目标目录"+dir.getAbsolutePath()+"下已经存在文件"+src.getName());
			}
		}else{
			File temp=new File(dir.getAbsolutePath()+File.separator+src.getName());
			flag=src.renameTo(temp);
			if(flag){
				System.out.println(src.getAbsolutePath()+"移动到"+dir.getAbsolutePath()+"下成功");
			}else{
				System.out.println(src.getAbsolutePath()+"移动到"+dir.getAbsolutePath()+"下失败");
			}
		}
		return flag;
	}
	/*
	 * 将目录srcDir移动到目录targetDir下
	 */
	public boolean moveDir(File srcDir,File targetDir,boolean isCover){
		boolean flag=false;
		if(!srcDir.exists()){
			System.out.println("目录"+srcDir.getAbsolutePath()+"不存在");
			return flag;
		}
		if(!srcDir.isDirectory()){
			System.out.println(srcDir.getAbsolutePath()+"不是目录");
			return flag;
		}
		if(!targetDir.exists()){
			System.out.println("目标目录"+targetDir.getAbsolutePath()+"不存在");
			return flag;
		}
		if(!targetDir.isDirectory()){
			System.out.println(targetDir.getAbsolutePath()+"不是目录");
			return flag;
		}
		List<File> list=this.findFile(targetDir, srcDir.getName(), false);
		if(list.size()>0){
			if(isCover){
				this.deleteDir(list.get(0));
				File temp=new File(targetDir.getAbsolutePath()+File.separator+srcDir.getName());
				flag=srcDir.renameTo(temp);
				if(flag){
					System.out.println(srcDir.getAbsolutePath()+"移动到"+targetDir.getAbsolutePath()+"下成功");
				}else{
					System.out.println(srcDir.getAbsolutePath()+"移动到"+targetDir.getAbsolutePath()+"下失败");
				}
			}else{
				System.out.println("目标目录"+targetDir.getAbsolutePath()+"下已经存在目录"+srcDir.getName());
			}
		}else{
			File temp=new File(targetDir.getAbsolutePath()+File.separator+srcDir.getName());
			flag=srcDir.renameTo(temp);
			if(flag){
				System.out.println(srcDir.getAbsolutePath()+"移动到"+targetDir.getAbsolutePath()+"下成功");
			}else{
				System.out.println(srcDir.getAbsolutePath()+"移动到"+targetDir.getAbsolutePath()+"下失败");
			}
		}
		return flag;
	}
	/*
	 * 删除目录
	 */
	public boolean deleteDir(File dir){
		boolean flag=false;
		if(!dir.exists()){
			System.out.println("目录"+dir.getAbsolutePath()+"不存在");
			return flag;
		}
		if(!dir.isDirectory()){
			System.out.println(dir.getName()+"不是目录");
			return flag;
		}
		File[] files=dir.listFiles();
		for(File file:files){
			this.deleteFileAction(file);
		}
		flag=dir.delete();
		if(flag){
			System.out.println("删除目录"+dir.getAbsolutePath()+"成功");
			return flag;
		}else{
			System.out.println("删除目录"+dir.getAbsolutePath()+"失败");
			return flag;
		}
	}
	/*
	 * 递归删除文件
	 */
	private void deleteFileAction(File f){
		if(f.isFile()){
			f.delete();
		}else if(f.isDirectory()){
			File[] files=f.listFiles();
			for(File file:files){
				deleteFileAction(file);
			}
			f.delete();
		}
	}
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值