Android File文件「重命名」和「删除」操作


前言

最近做项目遇到一个需求:
1.要求当app版本升级覆盖安装后,清除app部分功能的本地缓存。
正好需要用到「重命名文件」和「删除文件」操作。


1. 重命名文件

renameTo 方法

	/**
     * 重命名文件:
     * oldPath 和 newPath必须是新旧文件的绝对路径
     */
    public static boolean renameFile(String oldPath, String newPath) {
        if (TextUtils.isEmpty(oldPath)) {
            return false;
        }

        if (TextUtils.isEmpty(newPath)) {
            return false;
        }
        File oldFile = new File(oldPath);
        File newFile = new File(newPath);
        if (newFile.exists()) {
            return false;
        }
        //重命名
        return oldFile.renameTo(newFile);
    }

2. 删除文件

delete 方法

	/**
     * 对文件夹下的文件进行清扫
     * 
     * @param topDir 文件夹目录
     * @param skips 需要保存不被清扫的文件
     * @param rmTopDir 是否清扫父文件 true:清扫 false:不清扫
     * @return 清扫结果
     */
    public static boolean cleanupDirFiles(@NonNull final String topDir, @NonNull final Set<String> skips, boolean rmTopDir) {
        final File file = new File(topDir);
        if (!file.exists()) {
            return false;
        } else {
            if (file.isDirectory()) {
            	//获取子文件列表
                final File[] childFiles = file.listFiles();
                if ((null == childFiles) || (childFiles.length <= 0)) {
                	//判断是否包含不被清扫的文件,如果包含,则不delete
                    if (!skips.contains(file.getAbsolutePath())) {
                        return file.delete();
                    } else {
                        return true;
                    }
                }
				//遍历
                for (File f : childFiles) {
                    final String absPath = f.getAbsolutePath();
                    //判断是否包含不被清扫的文件,如果包含,则不delete
                    if (!skips.contains(absPath)) {
                        if (!cleanupDirFiles(absPath, skips, true)) {
                            return false;
                        }
                    }
                }
            }
            //判断是否清扫父文件
            if (rmTopDir && (!skips.contains(file.getAbsolutePath()))) {
                return file.delete();
            }
        }
        return true;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值