源文件名长度大于文件系统支持的长度问题的解决

2025-10-27 20:36:37

1、将下列代码复制进入记事本,保存为Delete.java。

2、import java.io.File;import java.io.IOException;import java.util.List;import java.util.ArrayList;/** * @Author ... * @Date 2017.10.1 * */public class Delete {    public static final int MAX_DOT_NUM = 30;    public static List<File> fileList = new ArrayList<File>();    public static void main(String[] args) {    if( args.length < 1 ){        System.out.println("实现功能:删除指定的文件、文件夹及其包含的文件和子目录列表(对Windows操作系统不支持的层次较深的目录也有效)。");        System.out.println();        System.out.println("命令格式:java Delete [filename | pathname]");        System.out.println("\tfilename\t文件名");        System.out.println("\tpathname\t目录名");        System.out.println();        System.out.println("示例:");        System.out.println("\tjava Delete d:\\test.txt");        System.out.println("\tjava Delete \"d:\\hello world\"");        System.out.println("\t说明:文件夹包含空格符号时,请用引号将文件名或目录名括起来");        System.out.println();        return;    }    try{        System.out.print("开始处理,请耐心等待...");        long startTime=System.currentTimeMillis();        int count = delete(args[0]);            long stopTime=System.currentTimeMillis();            System.out.print("处理结束,处理文件(或目录)" + count + "个,");        System.out.println("花费时长:"+((stopTime-startTime)/1000)+"秒");    }catch(Exception ex){        ex.printStackTrace();    }    }    /**     * 删除指定名称的文件或文件夹(包含其子文件夹和文件)     *      * @param filename 文件或文件夹名称     * @throws IOException     */    public static int delete(String filename) throws IOException{    int count = 0;    boolean bPlayMovies = true;/*设为false时关闭删除时的动画;*/    File f = new File(filename);    if( !f.exists() ){        System.out.println( "\r\n指定的文件或文件夹" + f + "不存在!");        return 0;    }    fileList.add(f);    boolean isplus = false;    while( fileList.size()>0 ){        if( bPlayMovies ){            if( count % MAX_DOT_NUM == 0 ){                isplus = !isplus;            }        }        File tmp = fileList.get(fileList.size()-1);        if( tmp.isDirectory() ){            /*处理文件夹*/            File[] files = tmp.listFiles();            if( files.length > 0 ){                /*如果该文件夹下包含文件或子文件夹*/

                for(File file : files){                    fileList.add(file);                }            } else{                fileList.remove(fileList.size()-1);                tmp.getAbsoluteFile().delete();                count++;                if( bPlayMovies ){                    playMovies( isplus );                }            }        }else{            /*处理文件*/            fileList.remove(fileList.size()-1);            tmp.delete();             count++;            if( bPlayMovies ){                playMovies( isplus );            }        }    }    if( bPlayMovies ){        playMovies( false );    }    System.out.println();    return count;    }    public static void playMovies(boolean isplus){    if( isplus ){        System.out.print(".");    }else{        for( int j = MAX_DOT_NUM; j > 0; j--){            System.out.print("\b \b");        }    }    }}

3、使用javac编译代码文件:javac Delete.java。

4、运行代码:java Delete "待删除的深文件夹"。无参数运行,即"java Delete"会打印帮助说明。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢