关于Java File Delete

sddcc123 sddcc123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
首先有一个非空的文件夹(内包含子文件夹,子文件夹内包含文件)

我将文件夹内的子文件夹拷贝出来,代码如下:

public class DirCopy {
private static final Logger logger = Logger.getLogger(DirCopy.class);
public static boolean copy(String file1, String file2) {

File in = new File(file1);
File out = new File(file2);
if (!in.exists()) {
logger.error(in.getAbsolutePath() + "源文件路径错误!!!");
return false;
} else {
logger.debug("源文件路径" + in.getAbsolutePath());
logger.debug("目标路径" + out.getAbsolutePath());
}
if (!out.exists())
out.mkdirs();
File[] file = in.listFiles();
FileInputStream fin = null;
FileOutputStream fout = null;
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
try {
fin = new FileInputStream(file[i]);
} catch (FileNotFoundException e) {
logger.error("[execute()]catch:" + e.getMessage());
}
System.out.println("in.name=" + file[i].getName());
try {
fout = new FileOutputStream(new File(file2 + AppConfig.get("jr.dir.FileSeparator")
+ file[i].getName()));
} catch (FileNotFoundException e) {
logger.error("[execute()]catch:" + e.getMessage());
}
//System.out.println(file2);
int c;
byte[] b = new byte[1024 * 5];
try {
while ((c = fin.read(b)) != -1) {

fout.write(b, 0, c);
System.out.println("复制文件中!");
}
fin.close();
fout.flush();
fout.close();
} catch (IOException e) {
logger.error("[execute()]catch:" + e.getMessage());
}
} else
copy(file1 + AppConfig.get("jr.dir.FileSeparator") + file[i].getName(), file2 + AppConfig.get("jr.dir.FileSeparator")
+ file[i].getName());
}

return true;

}



然后删除该文件夹,代码如下:

public static void deleteDir(File dir) {
if (dir == null || !dir.exists() || !dir.isDirectory())
return; // 检查参数
for (File file : dir.listFiles()) {
if (file.isFile())
file.delete(); // 删除所有文件
else if (file.isDirectory())
deleteDir(file); // 递规的方式删除文件夹
}
dir.delete();// 删除目录本身
}



问题是:删除文件夹时,发现只能删除文件夹中的第一个子文件夹。IO流我查了,发现已经关闭了,用了Unlocker发现文件被占用。后来我改用while(!file.delete)发现文件是可以被删除的,但是要等好久,请大侠解释以上问题
...全文
评论 9
收藏 已收藏
分享
返回顶部
sddcc123
Java EE 67,535 成员 225,843 内容