无聊中通过程序建了一个文件 test(下面包含44个文件夹,名字都是test,不知道是不是Windows允许的最多文件夹了)问题来了,我无法删除这个 test 文件了,不管手工还是程序请各路大虾指教
----------
目前试过的方式1,遍历文件夹,到最后一个文件删除,依次递归(堆栈溢出)2,拼接文件名,比如 d:\test\test...\test ,想从最后一个删起,没效果
----------
目前试过的方式1,遍历文件夹,到最后一个文件删除,依次递归(堆栈溢出)2,拼接文件名,比如 d:\test\test...\test ,想从最后一个删起,没效果
你是不是写了个无限循环呀?建立文件夹?
以下是测试程序package javaIo;import java.io.File;
import java.io.IOException;public class FileOperator {
private String initFilePath = "d:\\test";
private StringBuffer createSb = new StringBuffer();
private StringBuffer deleteSb = new StringBuffer();
/**
* 尽管循环100次,但Windows只创建了50次
*/
private void createFile() {
createSb.append(initFilePath);
for (int i = 0; i <= 100; i++) {
File file = new File(createSb.toString());
if (!file.exists()) {
try {
file.mkdir();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
createSb.append("\\test");
}
}
/**
* 寻找到最后一个文件,然后依次减去一个文件名,并删除,直到根目录
* 根据我的测试,JAVA只能删除最后一层文件
* (若文件夹中又含有文件夹或文件,删除不掉)
*/
private void deleteFile(){
deleteSb.append(initFilePath);
File file = new File(initFilePath);
while (true) {
if (file.exists()) {
deleteSb.append("\\test");
file = new File(deleteSb.toString());
} else{
deleteSb.delete(deleteSb.lastIndexOf("\\"), deleteSb.length());
file = new File(deleteSb.toString());
file.delete();
if(deleteSb.indexOf("\\")==-1){
System.out.println("finished delete");
break;
}
}
}
}
public static void main(String []args){
new FileOperator().createFile(); //创建文件夹
// new ListFile().deleteFile(); //查看删除效果请回复这行
}
}
问题来了,我无法删除这个 test 文件了,不管手工还是程序如果原因是因为用file类删不掉含有子目录的文件夹的话
手工应该可以删除的阿怎莫说手工删不掉呢
del /f /s /q "path"