File类使用的三个案例

来源:互联网 发布:java当前类属性的类型 编辑:程序博客网 时间:2024/05/16 13:55
  • 案例一:列出指定目录中的所有文件,包括子文件夹中的文件
import java.io.File;public class FilesDemo {    public static void main(String[] args) {        /*案例一         *需求:列出指定目录中的所有文件,包括子文件夹中的文件         *方法:递归算法(recursion)         */        File file=new File("E:/线性代数课件");        listAllFile(file);    }    private static void listAllFile(File f) {        File[] fs=f.listFiles();        for (File file : fs) {            System.out.println(file);            if(file.isDirectory()){                listAllFile(file);//递归算法            }        }    }}
  • 案例二:列出文件的分层结构(菜单结构)
import java.io.File;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class FilesDemo {    public static void main(String[] args) {        /*案例二         *需求:列出文件的分层结构(菜单结构)         *输出:美工部>抠图>其他素材         */        File file=new File("E:/美工部/抠图/其他素材/背景1.jpg");        List<String> fileNames=new ArrayList<>();        listAllFile(file,fileNames);        System.out.println(fileNames);//[其他素材, 抠图, 美工部]        Collections.reverse(fileNames);//翻转list中的元素         System.out.println(fileNames);//    [美工部, 抠图, 其他素材]        StringBuilder sb=new StringBuilder(60);//拼接        for (String name : fileNames) {//迭代            sb.append(name).append(">");        }        sb.deleteCharAt(sb.length()-1);        System.out.println(sb);//美工部>抠图>其他素材    }    private static void listAllFile(File f,List<String> l) {        if(!"".equals(f.getParentFile().getName())){            l.add(f.getParentFile().getName());        }        if(f.getParentFile().getParentFile()!=null){            listAllFile(f.getParentFile(),l);//递归算法        }    }}
  • 案例三:批量修改文件名
import java.io.File;public class FilesDemo {    public static void main(String[] args) {        /*案例三         *需求:批量修改文件名         *如在C:\123路径下,有以下文件:         *java代码-Eclipse-01.txt         *java代码-Eclipse-02.txt         *java代码-Eclipse-03.txt         *java代码-Eclipse-04.txt         *现需要截取掉相同部分“java代码-Eclipse-”         */        File dir=new File("C:/123");        File[] fs=dir.listFiles();        String s="java代码-Eclipse-";        for (File file : fs) {            if(file.getName().contains(s)){//判断是否包含该文件                //如果包含用“”空字符代替                String newName=file.getName().replace(s, "");                file.renameTo(new File(dir,newName));            }        }        /*输出:        01.txt        02.txt        03.txt        04.txt*/    }   }
  • 案例四:文件过滤器
import java.io.File;import java.io.FilenameFilter;public class FilesDemo {    public static void main(String[] args) {        /*案例四:文件过滤器         *需求:过滤掉指定文件         */        File dir=new File("C:/123");        //File[] listFiles(FilenameFilter filter)         //返回表示的抽象路径名的文件和目录的目录,这个抽象路径名满足指定过滤器表示数组。        //Interface FilenameFilter        //实现FilenameFilter接口,编写过滤规则        File[] fs=dir.listFiles(new FilenameFilter(){            @Override            public boolean accept(File dir, String name) {                //只打印出以“.txt”结尾,并且是文件的资源                return new File(dir,name).isFile()&&name.endsWith(".txt");            }        });        for (File file : fs) {            System.out.println(file);        }    }   }