文件操作 

  java提供了File类来供我们操作文件,FIle是文件或文件夹的抽象表示,也就是对象表示。总结了几个常用的方法

  • File(File parenrt,String child)、FIle(String pathname)、File(String parent,String child),三个构造函数可以多种方式实现实例化。
  • getAbsolutePath():返回此文件或者文件夹的绝对路径
  • getName():返回此文件夹或者文件的名称
  • getPath():返回此文件夹或者文件的表示,也就是构造参数中的参数
  • createNewFIle():创建一个新的文件
  • mkdir():创建新目录,注意只能创建一层,
  • mkdirs():创建多层目录
  • isDirectory():判断是否是一个目录
  • isFile():判断是否是文件
  • list():返回文件或目录的名字的字符串数组
  • listFiles():返回文件或目录的文件对象数组

文件过滤器:

  listFiles()函数返回文件的对象列表,而有时候我们只需要其中特定的文件,比如说.txt文件,而其余的不用返回,虽然可以在返回后再操作该数组,但这样有点太复杂了,java给我们提供了俩个接口FilenameFilter和FileFilter,将此接口对象传入到listFiles的参数中,以达到过滤的目的。接口中的accept就是过滤函数,分别对获得的每一个文件调用此方法,若返回true,则放入到数组中,反之移除

FilenameFilter:

  FilenameFilter过滤器,我们只能使用文件或者目录的名字,dir参数是文件所在的目前对象,并不是文件的FIle对象,所有我们一般只是使用name参数

public interface FilenameFilter {
boolean accept(File dir, String name);
}

FileFilter:

  FileFilter过滤器,参数pathname即是文件的FIle对象,通过它我们可以获得文件的一切属性,比如说pathname.getName()就是文件的名字啦,可以变成间接的FIlenameFilter。功能强大

public interface FileFilter {
boolean accept(File pathname);
}

实例:

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter; /**
* 自定义的局部内部类来自定义过滤器类,
*/
public class Generics {
//自定义过滤器类实现FilenameFilter接口
static class MyFilenameFilter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");//只获取.java结尾的文件或目录
}
}
//自定义过滤器类实现FileFilter接口
static class MyFileFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java");//只获取.java结尾的文件或目录
}
}
public static void main(String[] args) {
File file =new File("D:");
//方式一:FileFilter过滤器
File[] files=file.listFiles(new MyFileFilter());
for (File f:files){
System.out.println(f.getName());
}
//方式二:FilenameFilter过滤器
File[] files2=file.listFiles(new MyFilenameFilter());
for (File f:files2){
System.out.println(f.getName());
}
//list()函数只能接受FilenameFilter对象,匿名内部类的形式实现,
//或者可以理解为为什么既然有FileFilter,而还要FilenameFilter
// 1.对于listFiles来说,FilenameFilter可以直接操作name,而不需要通过File对象获取
// 2.对于list来说,它只能是FilenameFilter过滤器,因为得到的是String,已经不是File了
String[] filenames = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
});
for(String str:filenames){
System.out.println(str);
}
}
}

最新文章

  1. JavaScript的“原型甘露”
  2. JAVAScript控制多个下拉框
  3. LINQ系列:LINQ to SQL Concat/Union
  4. C# EasyUI树形结构权限管理模块
  5. JavaScript变量和数据类型
  6. Mysql获取时间
  7. 问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found解决方法
  8. python学习笔记:Day01
  9. Smarty3学习笔记
  10. phpcms 02
  11. Linux在向磁盘新建文件的时候在系统层面的四步操作
  12. iOS新特性引导页
  13. android滑动基础篇 - 触屏显示信息
  14. 用 Asterisk 搭建自己的免费 VoIP 服务器
  15. CH BR4思考熊(恒等有理式-逆波兰表达式求值)
  16. sublime text3 配置使用
  17. (10.16)java小作业!
  18. C++标准库string类型的使用和操作总结
  19. 【并发编程】【JDK源码】CAS与synchronized
  20. phpcms中set_config和get_sysinfo函数

热门文章

  1. iText 制作PDF
  2. matplotlib简单的新手教程和动画
  3. html5 页面元素插件
  4. 读BeautifulSoup官方文档之与bs有关的对象和属性(1)
  5. WPF中DataGrid自定义实现最后一行下面跟一个汇总行,类似MT4
  6. 重写combobox模板,实现支持过滤的combobox
  7. Win8 Metro(C#)数字图像处理--2.50图像运动模糊
  8. WP8.1的shell:SystemTray去哪了?
  9. Android零基础入门第37节:初识ListView
  10. 如何替换Windows的Shell(即explorer.exe)