为什么要判断storePath是文件的路径还是目录的路径
来源:4-2 店铺信息编辑之Service层的实现
qq_森林中的小熊_0
2019-11-24 17:19:58
if(shopImgInputStream != null && fileName != null && !"".equals(fileName)){ Shop tempShop = shopDao.queryByShopId(shop.getShopId()); if(tempShop.getShopImg() != null){ ImageUtil.deleteFileOrPath(tempShop.getShopImg()); } addShopImg(shop, shopImgInputStream, fileName); }
在实现类中已经判断了原商铺信息对象的图片是否存在,在原图片文件存在的情况下才执行的删除方法
public static void deleteFileOrPath(String storePath) { File fileOrPath = new File(PathUtil.getImgBasePath() + storePath); if (fileOrPath.exists()) { if (fileOrPath.isDirectory()) { File files[] = fileOrPath.listFiles();//将路径下所以文件列入数组 for (int i = 0; i < files.length; i++) { files[i].delete(); } } fileOrPath.delete(); } }
那么在删除方法里面,传进来的肯定是文件路径吧,那么直接fileOrPath.delete();删除文件路径下的图片文件不就可以了吗。而且就算判断传到删除方法里的是目录路径,也不应该把该路径的文件全删了吧,PathUtil.getImgBasePath()根路径的文件也全删了,其他图片不就都没有了吗
1回答
同学你好。
1、实现类中tempShop.getShopImg() != null 判断的是从tempShop这个对象中,是否可以获取shopImg这个属性,这个属性是字符串类型的,其中存储的是什么内容,是没有校验的。只要不是null都会传递给ImageUtil.deleteFileOrPath。
2、而fileOrPath.exists()是判断这个路径代表的文件或者文件夹在本地是否存在,这是很必要的。
如果shopImg这个属性中指定的既不是文件也不是文件夹。那么就没有必要执行删除。
如果是多层的文件夹,贸然执行fileOrPath.delete()是会有问题的。delete()只能删除单个文件和空的目录,如果用来删除包含多个文件或子目录的非空目录就会删除失败。
如果解答了同学的疑问,望采纳~
祝学习愉快~
相似问题