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.txt2d:\\新建文本文档.txt
上面的代码中dir.listFiles(FilenameFilter ) 是策略模式的一种实现,而且使用了匿名内部类的方式。
【详解设计模式】-策略模式
Java内部类超详细总结(含代码示例)