七. 关于文件目录的过滤查询操作
文件目录下,查询该目录下的文件信息。
七.一 方法
其中,文件过滤, 使用的是 FileFilter
@FunctionalInterface public interface FileFilter { /** * Tests whether or not the specified abstract pathname should be * included in a pathname list. * * @param pathname The abstract pathname to be tested * @return <code>true</code> if and only if <code>pathname</code> * should be included */ boolean accept(File pathname); }
这个参数 File pathname, 指的是 文件。
FilenameFilter 时
@FunctionalInterface public interface FilenameFilter { /** * Tests if a specified file should be included in a file list. * * @param dir the directory in which the file was found. * @param name the name of the file. * @return <code>true</code> if and only if the name should be * included in the file list; <code>false</code> otherwise. */ boolean accept(File dir, String name); }
File dir 这个参数 表示的是 当前目录。
name 表示的是目录下的各个文件名称。
七.二 演示
@Test public void DireOperTest(){ //是一个目录 File file=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"); //只展示一级的 String [] fileNames= file.list(); for(String s:fileNames){ System.out.println("文件名称:"+s); } System.out.println("***********************************"); File[] files=file.listFiles(); for(File f:files){ System.out.println("文件名称:"+f.getName()); } System.out.println("***********过滤操作*************"); File[] filterFiles=file.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { //第一个指目录文件, 第二个文件的名称。 System.out.println("文件:"+dir.getAbsolutePath()); System.out.println("name:"+name); //如果名称中包括 . 就返回 if(name.indexOf(".")>=0){ return true; } return false; } }); System.out.println("最后过滤得到的信息1"); for(File f:filterFiles){ System.out.println("过滤后的文件名称:"+f.getName()); } System.out.println("***********又一次过滤*************"); File[] filter2Files=file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { //指的是下面的每一个文件 System.out.println("名称pathname:"+pathname.getAbsolutePath()); //是文件,就返回 if(pathname.isFile()){ return true; } return false; } }); System.out.println("最后过滤得到的信息2"); for(File f:filter2Files){ System.out.println("过滤后的文件名称:"+f.getName()); } }
控制台打印输出:
七.三 递归显示目录下的文件
关于这递归显示目录下的文件,可以参考老蝴蝶以前写的文章: 递归查询文件目录下所有的文件(八)
八. 显示所有磁盘
八.一 方法
八.二 演示
@Test public void rootTest(){ File[] files=File.listRoots(); for(File f:files){ // c:\ d:\ E:\ System.out.println("文件路径:"+f.getAbsolutePath()); } }
控制台打印输出:
九. 转换成 Path
Path 是 java 1.7 之后引入的类, 用于代替 以前的 File 类。 常常与 java.nio.file.Files 类联合使用。
九.一 方法
九.二 演示
@Test public void pathClassTest(){ File file1=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello.txt"); Path path=file1.toPath(); System.out.println("输出:"+path.getFileName()); }
控制台打印输出:
关于 Path类和 Files 工具类,后面老蝴蝶会讲解的。
上面就是 File 类的基本操作了,必须要掌握的。
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!