您的位置:首页 > 产品设计 > UI/UE

JAVA 文件无法删除怪异解决 .delete()无效,但返回true 递归删除文件

2014-09-20 23:18 549 查看
       最近做一个项目,springMVC   一个类文件上传后,另一类对该文件操作后删除,

        file.delete(),打印返回true,但是文件没有被成功删除

       手动删除,提示正在被jvm占用。 

        怀疑操作流没有关闭,检查,未发现。

        改用FileUtils.deleteQuietly(),问题依旧。

        怀疑引用类有未知bug,于是专门写一个类,只进行删除操作,问题依旧。

        正在烦躁,无意间将web窗口重启,一直是用jetty跑的,这次无意选了tomcat

        奇迹出现,问题解决了。回到jetty问题复现。

        不知道原因,google未果……算是多了一种解决问题的思路,代码上找不到突破口,换换容器试试,说不定柳暗花明。

         提供一个文件删除的类。备用。

        

public class Delfile {

/**
* 删除某个文件夹下的所有文件夹和文件
*
* @param delpath
* String
* @throws FileNotFoundException
* @throws IOException
* @return boolean
*/
public static boolean deletefile(String delpath) throws Exception {
try {

File file = new File(delpath);
// 当且仅当此抽象路径名表示的文件存在且 是一个目录时,返回 true
if (!file.isDirectory()) {
file.delete();
} else if (file.isDirectory()) {
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File delfile = new File(delpath + "\\" + filelist[i]);
if (!delfile.isDirectory()) {
delfile.getAbsoluteFile().delete();
System.out .println(delfile.getAbsolutePath() + "删除文件成功");
} else if (delfile.isDirectory()) {
deletefile(delpath + "\\" + filelist[i]);
}
}
System.out.println(file.getAbsolutePath()+"删除成功");
file.getAbsoluteFile().delete();
}

} catch (FileNotFoundException e) {
System.out.println("deletefile() Exception:" + e.getMessage());
}
return true;
}

/**
* 输出某个文件夹下的所有文件夹和文件路径
*
* @param delpath
* String
* @throws FileNotFoundException
* @throws IOException
* @return boolean
*/
public static boolean readfile(String filepath)
throws FileNotFoundException, IOException {
try {

File file = new File(filepath);
System.out.println("遍历的路径为:" + file.getAbsolutePath());
// 当且仅当此抽象路径名表示的文件存在且 是一个目录时(即文件夹下有子文件时),返回 true
if (!file.isDirectory()) {
System.out.println("该文件的绝对路径:" + file.getAbsolutePath());
System.out.println("名称:" + file.getName());
} else if (file.isDirectory()) {
// 得到目录中的文件和目录
String[] filelist = file.list();
if (filelist.length == 0) {
System.out.println(file.getAbsolutePath()
+ "文件夹下,没有子文件夹或文件");
} else {
System.out
.println(file.getAbsolutePath() + "文件夹下,有子文件夹或文件");
}
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\\" + filelist[i]);
System.out.println("遍历的路径为:" + readfile.getAbsolutePath());
if (!readfile.isDirectory()) {
System.out.println("该文件的路径:"
+ readfile.getAbsolutePath());
System.out.println("名称:" + readfile.getName());
} else if (readfile.isDirectory()) {
System.out.println("-----------递归循环-----------");
readfile(filepath + "\\" + filelist[i]);
}
}

}

} catch (FileNotFoundException e) {
System.out.println("readfile() Exception:" + e.getMessage());
}
return true;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息