File类,外加F过滤器

来源:互联网 发布:九宫图算法口决 编辑:程序博客网 时间:2024/05/01 16:45

特点:

可以将一个已存在的,或者不存在的文件或者目录封装成file对象。

和输出流不一样,如果文件不存在,则创建,如果文件存在,则不创建

两个重要的字段:

字段摘要static StringpathSeparator
          与系统有关的路径分隔符,为了方便,它被表示为一个字符串。在 UNIX 系统上,此字段为 ':';在 Microsoft Windows 系统上,它为';'static Stringseparator
          与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为'\\'

构造方法:

构造方法摘要File(File parent,String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。File(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。File(String parent,String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

import java.io.File;public class FileDemo {public static void main(String[] args) { File f1 = new File("c:\\a.txt");File f2 = new File("c:\\","a.txt");File f = new File("c:\\");File f3 = new File(f,"a.txt");File f4 = new File("c:"+File.separator+"abc"+File.separator+"a.txt"); }  }

常用方法:

通常该方法用于健壮性判断

 booleandelete()
          删除此抽象路径名表示的文件或目录。 booleanexists()
          测试此抽象路径名表示的文件或目录是否存在。 普通的方法:

 booleancreateNewFile()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 booleandelete()
          删除此抽象路径名表示的文件或目录。 StringgetAbsolutePath()
          返回此抽象路径名的绝对路径名字符串。 booleanisDirectory()
          测试此抽象路径名表示的文件是否是一个目录。

 booleanmkdir()
          创建此抽象路径名指定的目录。 booleanmkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 booleanrenameTo(File dest)
          重新命名此抽象路径名表示的文件。

重点方法:一系列的list    参数filter结尾的是过滤器,本文结尾会写到。还有要注意返回值得类型
 String[]list()
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 String[]list(FilenameFilter filter)
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 File[]listFiles()
          返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 File[]listFiles(FileFilter filter)
          返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 File[]listFiles(FilenameFilter filter)
          返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

public static void listDemo() {File file = new File("c:\\");/* * 获取当前目录下的文件以及文件夹的名称,包含隐藏文件。 * 调用list方法的File对象中封装的必须是目录。 * 否则会发生NullPointerException * 如果访问的系统级目录也会发生空指针异常。 *  * 如果目录存在但是没有内容,会返回一个数组,但是长度为0. *  */String[] names = file.list();        File[] files = file.listFiles();for(String name : names){System.out.println(name);}

其他带有过滤器的方法:

so这里会插入过滤器:当当当当

涉及到的两个接口:

FilenameFilter   实现此接口的类实例可用于过滤器文件名。

方法摘要 booleanaccept(File dir,String name)
          测试指定文件是否应该包含在某一文件列表中。

FileFilter   用于抽象路径名的过滤器。

方法摘要 booleanaccept(File pathname)
          测试指定抽象路径名是否应该包含在某个路径名列表中。

ok,直接上实例;

import java.io.File;import cn.itcast.io.p2.filter.FilterByHidden;import cn.itcast.io.p2.filter.SuffixFilter;public class FileListDemo { public static void main(String[] args) {listDemo_2();listDemo_3();} public static void listDemo_3() {File dir = new File("c:\\");//该目录下不是隐藏的文件File[] files = dir.listFiles(new FilterByHidden());for(File file : files){System.out.println(file);}}public static void listDemo_2() {File dir = new File("c:\\");//该目录下以.txt为扩展名的文件String[] names = dir.list(new SuffixFilter(".txt"));for(String name : names){System.out.println(name);}}}}

接口代码:

import java.io.File;import java.io.FilenameFilter;public class SuffixFilter implements FilenameFilter {private String suffix ;public SuffixFilter(String suffix) {super();this.suffix = suffix;}@Overridepublic boolean accept(File dir, String name) {return name.endsWith(suffix);}}

import java.io.File;import java.io.FileFilter;public class FilterByHidden implements FileFilter {@Overridepublic boolean accept(File pathname) {return !pathname.isHidden();}}





0 0
原创粉丝点击