Java I/O系统详解(一)——File类
来源:互联网 发布:windows视频放大缩小 编辑:程序博客网 时间:2024/06/14 08:18
在学习那些真正用于在流中读写数据的类之前,我们先来学习一个帮助我们处理文件目录问题的类,即File类。
File类:
File类既能代表一个特定文件的名称,又能代表一个目录下一组文件的名称。
File类的功能我将它分为以下三点来介绍:
1.目录列表器: 如果我们想获得File对象包含的全部列表,我只需调用无参的list()方法。如果我们想或者一个受限(正则表达式)列表,那么我们就需要一个”文件名过滤器“,这个接口的accept方法告诉list方法是否显示某个文件名。
这里大家可能有点疑惑,accept方法怎么告诉list是否要显示该文件名呢?
我们先来看一下FilenameFilter接口的accept方法的API说明。
boolean accept(File dir,String name)
测试指定文件是否应该包含在某一文件列表中。
参数:dir - 被找到的文件所在的目录。 name - 文件的名称。
注意:由于FilenameFilter是一个接口,accept方法并没有被实现,所以你需要定义一个类实现这个接口,从而实现你自己想要的accept方法,将这个类的实例传递给list方法。
关于accept方法的实现我们等会再说,我们再来看一下list(FilenameFilter filter)方法是如何使用这个accept方法的,File类中的list(FilenameFilter filter)方法源代码如下:
public String[] list(FilenameFilter filter) { String names[] = list(); if ((names == null) || (filter == null)) { return names; } List<String> v = new ArrayList<>(); for (int i = 0 ; i < names.length ; i++) { if (filter.accept(this, names[i])) { v.add(names[i]); } } return v.toArray(new String[v.size()]); }
可见list方法认为只要list()中的文件名names[i]使accept方法返回true,那么就将这个文件名放入返回的数组之中。
现在,假如我们想在当前目录下找到后缀为.java的文件,那么我们就可以用下面的代码来实现:
import java.io.File;import java.io.FilenameFilter;import java.util.Arrays;import java.util.regex.Pattern;public class Dirlist { public static void main(final String[] args) { // TODO Auto-generated method stub File path=new File("."); String[] list=null; if(args.length==0) list=path.list(); else list=path.list(new FilenameFilter() { //编译正则表达式 private Pattern pattern = Pattern.compile(args[0]); @Override public boolean accept(File dir, String name) { //name整个字符串是否匹配正则表达式 return pattern.matcher(name).matches(); } }); Arrays.sort(list,String.CASE_INSENSITIVE_ORDER); for(String s:list) System.out.println(s); }}//args[0]:"^.+\.(java)$"
注意代码中的采用匿名内部类实现FilenameFilter接口。由于传给匿名内部类的参数必须是final的,所以main函数的参数为final。
2.目录实用工具: 我们可以利用File的性质和FilenameFilter接口以及regex包中Pattern类和Macher类来获取某个目录下的满足要求的文件集。
3.File的其他常用功能: File不仅仅只代表存在的文件或目录,也可以用File对象来创建新的目录或尚不存在的整个目录路径。除此之外,我们还可以通过File查看文件的种种特性,检查某个File对象代表的是一个文件还是一个目录,并且还可以删除文件。下面给出常用方法的API:
boolean creatNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
boolean delete()
删除此抽象路径名表示的文件或目录。
File getAbsoluteFile()
返回此抽象路径名的绝对路径名形式。
String getName()
返回由此抽象路径名表示的文件或目录的名称。
boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。 表示文件最后一次被修改的时间的 long 值,用与时间点(1970 年 1 月 1 日,00:00:00 GMT)之间的毫秒数表示;如果该文件不存在,或者发生 I/O 错误,则返回 0L
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
String toString()
返回此抽象路径名的路径名字符串。
boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
- Java I/O系统详解(一)——File类
- JAVA I/O(一) File类
- Java I/O 系统中的 File 类详解
- Java基础之I/O详解(一)File篇
- Java学习笔记—Java I/O系统(一)
- Java I/O —— File类
- Java I/O 系统-File类(一)-文件及其内容过滤
- [Java I/O系统]File类
- java I/O系统(1)-File类
- Java基础--I/O系统 ----File类
- Java I/O (一)文件类 java.io.File
- Java I/O流复习(一)—File类、字节流、字节缓冲流
- 系统研究Java--I/O(一)
- Java I/O系统(一)
- Java I/O系统(一)
- 核心java系列——I/O流详解(一)
- I/O篇(1)——java.io.File类
- Java I/O流系统之File类整理
- 自定义控件入门1-paint与canvas常用的方法介绍
- JSON字符串转换为Map
- 迷宫求解(栈实现)
- 136. Single Number
- U3D开发学习之路--字符串的3个小练习
- Java I/O系统详解(一)——File类
- (学习)wget命令|应用:字符界面下载安装包
- 【web前端开发技术】深入理解JavaScript中的依赖注入
- java的压缩和解压demo
- iOS记录0822
- 【用膝盖写代码系列】(2):NOIP2011普及组复赛题目详解
- 二阶线性偏微分方程
- Android反调试笔记
- Raspberry 编译环境设置