File类:File文件和目录路径名的抽象表示形式;
一、字段摘要(静态的)
pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。windos 里是; linux 是 :(String)
pathSeparatorChar
与系统有关的路径分隔符。(char)
separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。(string)
separatorChar
与系统有关的默认名称分隔符。(char)
// 与系统有关的路径分隔符 // win ; linux :
System.out.println(File.pathSeparator); System.out.println(File.pathSeparatorChar); // 与系统有关的名称分隔符 System.out.println(File.separator); System.out.println(File.separatorChar);
二、 构造方法:(注意:不能判定改路径表示的文件是否存在)
1.File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新
File
实例。
2.File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File
实例。(好处:父路径下有很多文件 子路径传)
3.File(File parent, String child)根据 parent 抽象路径名和 child 路径名字符串创建一个新
File
实例。(好处:灵活利用父路径的方法)
public static void method02(){ //封住路径b 注意:不能判定改路径表示的文件是否存在 File file=new File("D:\demo1018\b.txt"); System.out.println(file); //封住file对象 分开增加灵活性 File file2=new File("D:\demo1018","a.txt"); System.out.println(file2); //封住file对象 灵活利用父路径的方法 File file3=new File(new File("D:\demo1018"),"a.txt"); System.out.println(file3); }
三、 获取文件信息
1. getAbsolutePath()获取绝对路径 返回值是String 注意:当不是绝对路径时 拼接eclipse 绝对路径
2.getName()获取文件名 返回值是String
3.获取路径 getPath() 返回值是String
4.length()获取文件的大小 单位是字节 返回值是long整形
public static void method03(){ //获取file类对象的绝对路径 File file=new File("D:\demo1018\a.txt"); String abpath=file.getAbsolutePath(); System.out.println(abpath); //获取文件名 String fileName=file.getName(); System.out.println(fileName); //获取路径 String filePath=file.getPath(); System.out.println(filePath); //获取文件的大小 单位是字节 返回值是long整形 System.out.println(file.length()); }
四、操作 创建、删除文件 返回值是 Boolean
1.createNewFile() 创建文件 注意如果文件存在不覆盖,不存在则创建 只能创建文件 不能创建文件夹
2.delete()删除文件和文件夹
3.mkdir() mkdir() 创建文件夹不能创建文件 注意mkdir()只能创建一级目录 mkdirs()可创建多级目录
4.exists()判断文件或文件夹是否存在
5.isDirectory() 判断是否是文件夹
5.isFile()判断是否是文件
public static void method04() throws IOException{ File file=new File("D:\demo1018\c"); //创建文件 注意如果文件存在不覆盖,不存在则创建 //file.createNewFile(); //判断file对象封装的文件或文件夹是否存在 //System.out.println(file.exists()); //删除文件 //file.delete(); //创建文件夹不能创建文件 注意mkdir()只能创建一级目录 mkdirs()可创建多级目录 //file.mkdirs(); //判断是否是文件夹 //System.out.println(file.isDirectory()); //判断是否是文件 //System.out.println(file.isFile()); }
五、listFiles()方法
list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须是存在的,
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException
public static void method05() throws IOException{ File file=new File("D:\demo1018"); //获取路径下的所有文件和文件夹下的String[] String[] files=file.list(); /*//遍历 for (String s: files) { System.out.println(s); }*/ //获取路径下的所有文件和文件夹Files[] File[] files1=file.listFiles(); //遍历 for (File s: files1) { System.out.println(s); System.out.println(s.length()); } }
六、文件过滤器
运行图
1.自定义类继承FileFilter过滤器接口
public class MyFilter implements FileFilter { public boolean accept(File pathname) { //获取文件名 //String fileName=pathname.getName(); //将文件名转成小写 //FileName=fileName.toLowerCase(); return pathname.getName().toLowerCase().endsWith(".java"); } }
2.应用
public static void main(String[] args) { //创建File对象 File file=new File("d:\demo1018"); //调用文件过滤器过滤 File files[]=file.listFiles(new MyFilter()); //遍历 for (File f : files) { System.out.println(f); } }