面试必备:详解Java I/O流,掌握这些就可以说精通了? (2)

File类其实不止是代表一个文件,它也能代表一个目录下的一组文件(代表一个文件路径)。下面我们盘点一下File类中最常用到的一些方法

1File.delete() 删除文件或文件夹目录。
2File.createNewFile() 创建一个新的空文件。
3File.mkdir() 创建一个新的空文件夹。
4File.list() 获取指定目录下的文件和文件夹名称。
5File.listFiles() 获取指定目录下的文件和文件夹对象。
6File.exists() 文件或者文件夹是否存在
7
8String   getAbsolutePath()   // 获取绝对路径
9long   getFreeSpace()       // 返回分区中未分配的字节数。
10String   getName()         // 返回文件或文件夹的名称。
11String   getParent()         // 返回父目录的路径名字符串;如果没有指定父目录,则返回 null。
12File   getParentFile()      // 返回父目录File对象
13String   getPath()         // 返回路径名字符串。
14long   getTotalSpace()      // 返回此文件分区大小。
15long   getUsableSpace()    //返回占用字节数。
16int   hashCode()             //文件哈希码。
17long   lastModified()       // 返回文件最后一次被修改的时间。
18long   length()          // 获取长度,字节数。
19boolean canRead()  //判断是否可读
20boolean canWrite()  //判断是否可写
21boolean isHidden()  //判断是否隐藏
22
23
24// 成员函数
25static File[]    listRoots()    // 列出可用的文件系统根。
26boolean    renameTo(File dest)    // 重命名
27boolean    setExecutable(boolean executable)    // 设置执行权限。
28boolean    setExecutable(boolean executable, boolean ownerOnly)    // 设置其他所有用户的执行权限。
29boolean    setLastModified(long time)       // 设置最后一次修改时间。
30boolean    setReadable(boolean readable)    // 设置读权限。
31boolean    setReadable(boolean readable, boolean ownerOnly)    // 设置其他所有用户的读权限。
32boolean    setWritable(boolean writable)    // 设置写权限。
33boolean    setWritable(boolean writable, boolean ownerOnly)    // 设置所有用户的写权限。
34

需要注意的是,不同系统对文件路径的分割符表是不一样的,比如Windows中是“\”,Linux是“/”。而File类给我们提供了抽象的表示File.separator,屏蔽了系统层的差异。因此平时在代码中不要使用诸如“\”这种代表路径,可能造成Linux平台下代码执行错误。

下面是一些示例:

根据传入的规则,遍历得到目录中所有的文件构成的File对象数组

1public class Directory {
2    public static File[] getLocalFiles(File dir, final String regex){
3        return dir.listFiles(new FilenameFilter() {
4            private Pattern pattern = Pattern.compile(regex);
5            public boolean accept(File dir, String name) {
6                return pattern.matcher(new File(name).getName()).matches();
7            }
8        });
9    }
10
11    // 重载方法
12    public static File[] getLocalFiles(String path, final String regex){
13        return getLocalFiles(new File(path),regex);
14    }
15
16    public static void main(String[] args) {
17        String dir = "d:";
18        File[] files = Directory.getLocalFiles(dir,".*\\.txt");
19        for(File file : files){
20            System.out.println(file.getAbsolutePath());
21        }
22    }
23}

输出结果:

1d:\\1.txt
2d:\\新建文本文档.txt

上面的代码中dir.listFiles(FilenameFilter ) 是策略模式的一种实现,而且使用了匿名内部类的方式。

【详解设计模式】-策略模式

Java内部类超详细总结(含代码示例)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypwdw.html