今天遇到一个坑
file file = new file("...");boolean isDeleted = file.delete();//isDeleted is false
当file为文件夹的时候,直接调用delete是无法删除的,我们应该先把子文件逐个删去,最后再删去该空目录
网上找到的代码,亲测可用,工具类的几个方法贴在下方
1. deleteFolder(String filePath)
根据路径删除指定的目录或文件夹,无论存在与否
2.deletefile(String filePath)
删除单个文件
3.deleteDirectory(String filePath)
删除文件夹以及目录下的文件
/** * 根据路径删除指定的目录或文件,无论存在与否 *@param filePath 要删除的目录或文件 *@return 删除成功返回 true,否则返回 false。 */ public static boolean deleteFolder(String filePath) { file file = new file(filePath); if (!file.exists()) { return false; } else { if (file.isfile()) { // 为文件时调用删除文件方法 return deletefile(filePath); } else { // 为目录时调用删除目录方法 return deleteDirectory(filePath); } } } /** * 删除单个文件 * @param filePath 被删除文件的文件名 * @return 文件删除成功返回true,否则返回false */ public static boolean deletefile(String filePath) { file file = new file(filePath); if (file.isfile() && file.exists()) { return file.delete(); } return false; } /** * 删除文件夹以及目录下的文件 * @param filePath 被删除目录的文件路径 * @return 目录删除成功返回true,否则返回false */ public static boolean deleteDirectory(String filePath) { boolean flag = false; //如果filePath不以文件分隔符结尾,自动添加文件分隔符 if (!filePath.endsWith(file.separator)) { filePath = filePath + file.separator; } file dirfile = new file(filePath); if (!dirfile.exists() || !dirfile.isDirectory()) { return false; } flag = true; file[] files = dirfile.Listfiles(); //遍历删除文件夹下的所有文件(包括子目录) for (int i = 0; i < files.length; i++) { if (files[i].isfile()) { //删除子文件 flag = deletefile(files[i].getabsolutePath()); if (!flag) break; } else { //删除子目录 flag = deleteDirectory(files[i].getabsolutePath()); if (!flag) break; } } if (!flag) return false; //删除当前空目录 return dirfile.delete(); }
总结 以上是内存溢出为你收集整理的Android 删除文件总是返回false? 先看看你删的文件是否为文件夹全部内容,希望文章能够帮你解决Android 删除文件总是返回false? 先看看你删的文件是否为文件夹所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)