无聊中通过程序建了一个文件 test(下面包含44个文件夹,名字都是test,不知道是不是Windows允许的最多文件夹了)问题来了,我无法删除这个 test 文件了,不管手工还是程序请各路大虾指教
----------
目前试过的方式1,遍历文件夹,到最后一个文件删除,依次递归(堆栈溢出)2,拼接文件名,比如 d:\test\test...\test ,想从最后一个删起,没效果

解决方案 »

  1.   

    lz是不是最后io流没有关闭阿,所以文件都删不掉
      

  2.   

    先在dos下把它删除了再说。
    你是不是写了个无限循环呀?建立文件夹?
      

  3.   

    找到原因了,原来JAVA 只能删除最底层文件或文件夹(若文件夹中又含有文件夹或文件,删除不掉)另:windows 似乎只能有51层嵌套文件
    以下是测试程序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(); //查看删除效果请回复这行
    }
    }
      

  4.   

    lz自相矛盾了阿您说
    问题来了,我无法删除这个 test 文件了,不管手工还是程序如果原因是因为用file类删不掉含有子目录的文件夹的话
    手工应该可以删除的阿怎莫说手工删不掉呢
      

  5.   

    用unlocker工具试试。。  
      

  6.   

    WINDOWS有文件路径不能超过255的限制,超过了就不好操作了,需要在 dos 下删除这个文件夹
    del /f /s /q "path"