Java:文件操作
本文内容:
- 文件操作
- 文件过滤器
首发日期:2018-07-23
文件操作:
Java中对文件和目录的操作,通常通过File类来操作。
File类有几个构造函数,常用的是下面三个:
File(String pathname):根据路径名创建一个对象
File(String parent, String child):根据路径名跟子路径名创建一个对象(就是第一个的拆分版本)
File(File parent, String child):跟第二个相同功能,不过这里第一个可以给一个File对象。
当有了一个File对象之后,就可以使用下面的操作了。
创建文件或文件夹:
创建文件:file.createNewFile()
创建文件夹:file.mkdir()
逐层创建目录:file.mkdirs()
获取文件信息:
获取文件名:file.getName()
获取文件大小:file.length()
获取File对象所对应的路径(所以这里File里面怎么封装就怎么显示):file.getPath()
获取文件的绝对路径:file.getAbsolutePath()
获取文件最后修改时间(毫秒数):file.lastModified()
获取父目录路径(获取的也是file对象中封装的,如果初始化时没给目录,将返回null):file.getParent()
文件检测:
文件或目录是否存在:file.exists()
是否是目录:file.isFile()
是否是文件:file.isDirectory()
是否可读:file.canRead()
是否可写:file.canWrite()
删除文件或目录:
删除文件或目录(这个不能做到递归删除,所以如果文件夹里面有文件将不能删除):file.delete()
目录列举:
当File对象封装的是一个目录时,列出File对象的所有直接子文件\目录名,返回一个String数组:dir.list()
当File对象封装的是一个目录时,列出File对象的所有直接子文件\目录名,返回一个File数组:dir.listFiles()
补充:
- 文件的读写操作,是输入流和输出流的内容。
文件过滤器:
- File的list函数和listFiles函数可以列出目录的子文件,当需要列举时,就不得不考虑过滤。
- 使用list函数时,可以传入一个FilenameFilter的实现类,它可以根据文件名过滤文件。
- 使用listFiles函数时,可以传入一个FileFiter的实现类,它可以根据文件的本有信息过滤(参数是一个对象,你可以自定义使用什么信息来过滤)
- FilenameFilter是一个接口,实现它的类可以根据文件名进行过滤,它里面需要实现一个函数--accept(File dir, String name)函数,第一个参数是过滤的File对象的父目录,第二个参数是文件名或文件夹名。因为传入了文件名或文件夹名参数,所以我们才可以去进行文件名过滤。当返回true时,不会被过滤。
- FileFiter是一个接口,实现它的类可以根据文件的类型过滤。它里面需要实现一个函数--accept(File pathname)函数,参数pathname是完整的文件路径。当返回true时,不会被过滤。
文件名过滤器:
文件过滤器: