createNewFile创建文件失败

createNewFile创建文件失败

最近一段时间解决了一个奇怪的问题,问题主要原因还是自己基本的一些东西没有弄清楚导致的,在此记录一下。问题的起因是我在复制文件的时候失败了,createNewFile创建不出文件
原来代码如下:

   String cacheFilePath = CustomConstant.ENCRYPT_CACHE_FILE_PATH + File.separator + fileName;
        File cacheFile = new File(cacheFilePath);
        if (cacheFile.exists() && cacheFile.isFile()) {
            boolean delete = cacheFile.delete();
        }
        // 上级文件不存在,进行文件夹的创建
        if (!cacheFile.getParentFile().exists()) {
            boolean mkdirs = cacheFile.mkdirs();
        }
        try {
            boolean createResult = cacheFile.createNewFile();

这里我犯了个错误就是使用了整个路径加文件名后缀去new File(),应该先去创建目录文件夹,再去生成文件的,本来这个地方是错的但是在开发测试的时候我发现这样也可以直接生成相应的文件,并且比原来少了一步。当时我以为找了个好的办法,没想到这是bug的产生,这个bug导致当用户第一次安装使用文件复制功能时,不会成功,且该文件永远不会成功。导致这个bug的有两个原因:第一:因为我在生成文件时拼了文件名,导致当这个文件夹不存在,去创建文件夹时是根据全路径去创建的因为文件名也是路径的一部分,所以他创建了一个和文件名一样的文件夹,这样在创建文件时根据路径发现文件夹已存在就没有在去创建文件,而且我在判断文件是否存在时是以文件去区分的,导致有问题的文件夹一直删除不了,所以导致了这个bug后来改正后的代码

   String cacheFilePath = CustomConstant.ENCRYPT_CACHE_FILE_PATH;
        File cacheFile = new File(cacheFilePath);
        // 上级文件不存在,进行文件夹的创建
        if (!cacheFile.exists()) { // 先根据路径创建文件夹
            cacheFile.mkdirs();
        }
        try {
            File file = new File(cacheFilePath, fileName);//在创建文件
            if (file.exists()) {
                file.delete();
            }
            boolean createResult = file.createNewFile();
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值