操作io的工具类

一、操作io的工具类

commons-io是apache下的一个操作文件和目录的工具类,非常方便,而Commons-io可以直接操作文件和目录
Files是java自带的,在操作文件夹方面还需要自己写逻辑创建文件夹,操作文件时,copy/move(source,dest),dest需要写明操作的文件名,也就是不能直接写目录,而是还需要写目录下制定的文件名(也就相当于是可以重命名的)

二、commons-io

1、复制

FileUtils.copyFile(File,File);//拷贝文件到指定文件中
FileUtils.copyFileToDirectory(File,File);//拷贝文件到指定目录中
FileUtils.copyDirectory(File,File);//拷贝文件夹中得内容到指定目录中
FileUtils.copyDirectoryToDirectory(File,File);//拷贝文件夹到指定目录中

2、移动

FileUtils.moveFile(File,File);//移动文件到指定文件中
FileUtils.moveFileToDirectory(File,File);//移动文件到指定目录中
FileUtils.moveDirectory(File,File);//移动文件夹中得内容到指定目录中
FileUtils.moveDirectoryToDirectory(File,File);//移动文件夹到指定目录中

3、删除

FileUtils.deleteDirectory(File);//删除指定目录
FileUtils.deleteQuietly(File);//删除指定文件

三、Files,File

File存储的路径分隔符是\而不是/,注意在截断时的区别;
重命名:File.renameTo(File) —>boolean;,当前的file并不会变成修改后的路径
存在:File.exists()—>boolean

四、常用功能

1、解决文件复制和移动重名问题(参考windows文件,在重复的后面添加版本,版本叠加)

	public class FileManageSameName{
		public static final int INIT_VERSION = 1;//初始版本号
		public boolean copyOrMove(File resource, File target,String method) {
	        try {
	            File newFile = new File(target+"/"+resource.getName());//判断target目标目录中是否存在同名的临时file
	            if (newFile.exists()) {//处理已存在文件
	                resolveExist(newFile,FileManageSameName.INIT_VERSION);//newFile是经过版本处理的全新file
	                //修改resource源文件的文件名
	                resource.renameTo(new File(resource.getPath().substring(0,resource.getPath().lastIndexOf("\\")+1)+newFile.getName()));
	            }
	            //移动或复制
	            if(method.equals("copy")) {
	                if(resource.isFile()) FileUtils.copyFileToDirectory(resource,target);
	                else FileUtils.copyDirectoryToDirectory(resource,target);
	            }
	            if(method.equals("move")) {
	                if(resource.isFile()) FileUtils.moveFileToDirectory(resource,target,false);
	                else FileUtils.moveDirectoryToDirectory(resource,target,false);
	            }
	        } catch (IOException e) {
	            e.printStackTrace();return false;
	        }
	        return true;
	    }

	    //解决重名,添加默认版本
	    public void resolveExist(File file,int ver) {
	        String name = file.getName();
	        String oldPath = file.getPath();
	        String version = "("+ver+")";
	        String verFilePath = "";
	        File verFile = file;
	        if(file.isFile()) version = getFileName(name)+version+getSuffix(name);
	        if(file.isDirectory()) version  = name+version;
	        verFilePath = oldPath.substring(0, oldPath.lastIndexOf("\\") + 1) + version;
	        verFile = new File(verFilePath);
	        if(!verFile.exists()) file.renameTo(verFile);//重命名
	        else resolveExist(file,++ver); //版本更新
	    }


	    public String getSuffix(String name){ return name.substring(name.lastIndexOf("."));}
	
	    public String getFileName(String name){return name.substring(0,name.lastIndexOf("."));}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值