java删除文件,慎重

在处理删除图片的时候,我将图片路径从数据库取出,然后执行如下删除代码:

void deleteFile(File file){
		if(file!=null && file.exists()){
			if(file.isFile()){
				file.delete();
			}
			else if(file.isDirectory()){
				File files[] = file.listFiles();
				for(int i=0; i<files.length; i++){
					deleteFile(files[i]);
				}
			}
		}
}

 一直运行无误,突然有一次发现所有的图片都不见了,都是404,登陆xshell查看服务器:果然全没了。吓一跳,还好是测试服务器。

原因:

  发现有张图片地址为空,传到删除方法的时候就只剩下域名,也就是执行删除域名解析到的文件。这下递归结束后所有的文件全没了,只剩下空文件夹了。

以后考虑问题细致一些,既然是删除图片就不要多此一举判断目录了,判断是文件删除即可。

时间: 2024-10-25 02:56:17

java删除文件,慎重的相关文章

Java删除文件夹和文件

Java删除文件夹和文件 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份…… 1,验证传入路径是否为正确的路径名(Windows系统,其他系统未使用) Java代码 // 验证字符串是否为正确路径名的正则表达式 private static String matches = "[A-Za-z]:\\\\[^:?\"><*]*"; // 通过 sPath.matches(

Java删除文件夹及其包含文件

1 package com; 2 3 import java.io.File; 4 5 public class Local_Utils { 6 7 /** 8 * 删除本地文件夹及包含文件 9 * @param dir 10 */ 11 public static void deleteLocalDir(String dir){ 12 File file=new File(dir); 13 if(file.exists()){ 14 //delete()方法不能删除非空文件夹,所以得用递归方式

JAVA删除文件及文件夹

JAVA在删除文件或文件夹时,在java.io.File类下有个delete的方法,并且可以返回true or false, 用这个方法来删除单个文件时,很好使,但在删除文件夹时,如果文件夹下面有文件或者子文件夹时,调用这个方法就会返回false,也就是删除失败,这个方法只能删除空的文件夹,如果这样的话,就麻烦了,要达到删除文件夹的目的,就得一层一层的删除,很显然,可以使用递归,实现如下:(文件或文件夹都好使!!!)(如果在LINUX系统下运行时,可能得有个小地方要改改,为什么改自已想!) pa

java 删除文件夹中的所有文件及文件夹

删除文件夹(前提:文件夹为空以及InputStream和OutputStream等一些数据文件流关掉[close()],否则文件无法删除) //删除文件夹 public static void delFolder(String folderPath) { try { delAllFile(folderPath); //删除完里面所有内容 String filePath = folderPath; filePath = filePath.toString(); java.io.File myFil

java删除文件夹及子目录

package test; import java.io.FileNotFoundException; import java.io.IOException; import java.io.File; public class DelFile { /** * 删除某个文件夹下的所有文件夹和文件 * * @param delpath * String * @throws FileNotFoundException * @throws IOException * @return boolean */

java删除文件夹 Java中实现复制文件或文件夹

删除文件夹 import java.io.File; public class DeleteDir { /** * @param args */ public static void main(String[] args) { File filedir = new File("D:\\360down"); deletedirect(filedir); System.out.println("over"); } /** * @param file */ private

用java删除文件夹里的所有文件

import java.io.File; public class Test { public static void main(String args[]){ Test t = new Test(); delFolder("c:/bb"); System.out.println("deleted"); } //删除文件夹 //param folderPath 文件夹完整绝对路径 public static void delFolder(String folderP

Java删除文件或目录及目录下所有文件

一直在做C++相关开发的工作.突然某一天一时兴起,想学习下Java开发.然后再网上找到一本Java简明教程,入门是够用了.看到文件IO这一章,想起之前用C++做的删除文件或目录的练习,于是打算用Java来实现这个功能.本以为很简单的功能,还是遇到一些问题.仔细分析下代码,定位到出问题的地方.在此处记录下,提醒自己不会重蹈覆辙. 1. 第一版的删除函数是这样写的 1 static boolean delFile(String filename) { 2 File file = new File(f

java删除文件

package com.test; import java.io.File; /** * 删除指定目录下的文件 * @author Wdnncey * */ public class Delete { public static void main(String[] args) { File folder = new File("e:\\a\\b"); File[] files = folder.listFiles(); for(File file:files){ if(file.ge