File类与IO流

File类
递归
过滤器
字节流
字符流
Properties集合
缓冲流
转换流
序列化流
打印流

File类

File对象是文件和目录路径的抽象表示形式,可以使用File类对文件和文件夹进行操作。

1、File类的静态成员变量
File类与IO流_第1张图片
这个分隔符存在主要是因为Windows和Linux系统的分隔符不同,使用提供的静态成员变量可以使得程序可移植性更好。

package C6_File类与IO流.C1_File类;
import java.io.File;
public class class01_静态成员变量 {
    public static void main(String[] args) {
        System.out.println(File.pathSeparator);
//        pathSeparator
//        与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
        System.out.println(File.pathSeparatorChar);
//        pathSeparatorChar
//        与系统有关的路径分隔符。
        System.out.println(File.separator);
//        separator
//        与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
        System.out.println(File.separatorChar);
//        separatorChar
//        与系统有关的默认名称分隔符。

    }
}

File类与IO流_第2张图片

2、绝对路径与相对路径
(1) 绝对路径是一个完整路径
绝对路径的标志就是盘符
(2) 相对路径是一个简化的路径
相对路径是指相对于当前项目的根目录,路径就可以简化。
File类与IO流_第3张图片

3、构造方法
File类与IO流_第4张图片
创建对象的路径可以存在也可以不存在,可以是文件也可以是目录。

package C6_File类与IO流.C1_File类;
import java.io.File;
public class class02_构造方法 {
    public static void main(String[] args) {
        File dir=new File("E:\\IntelliJ IDEA 2019.1");
        //重写了toString()方法
        System.out.println(dir);

        //1、File(File parent, String child)
        File file1=new File(dir,"bin\\idea64.exe");

        //2、File(String pathname)
        File file2=new File("E:\\IntelliJ IDEA 2019.1\\bin\\idea64.exe");

        //3、File(String parent, String child)
        File file3=new File("E:\\IntelliJ IDEA 2019.1","bin\\idea64.exe");

        //4、File(URI uri)
        File file4=new File("http://localhost:8080/XiongYunFan/sendDispatcher");
    }
}

File类与IO流_第5张图片
4、获取相关方法
File类与IO流_第6张图片

package C6_File类与IO流.C1_File类;
import java.io.File;
public class class03_获取相关方法 {
    public static void main(String[] args) {
        File file=new File("web\\index.jsp");

        System.out.println("******************1、获取绝对路径字符串******************");
        System.out.println(file.getAbsolutePath());

        System.out.println("******************2、返回File对象的字符串形式******************");
        String path=file.getPath();
        System.out.println(path);

        System.out.println("******************3、返回File对象指向的文件名或目录名******************");
        System.out.println(file.getName());

        System.out.println("******************4、返回File对象指向的文件字节单位大小(不能为文件夹)******************");
        System.out.println(file.length());
    }
}

File类与IO流_第7张图片
5、判断相关方法

package C6_File类与IO流.C1_File类;
import java.io.File;
public class class04_判断相关方法 {
    public static void main(String[] args) {
        File file=new File("web\\index.jsp");

        System.out.println("******************1、判断File对象的文件/文件夹是否存在******************");
        System.out.println(file.exists());
        System.out.println("******************2、判断File对象是否为文件结尾(前提是存在)******************");
        System.out.println(file.isFile());
        System.out.println("******************3、判断File对象是否为文件夹结尾(前提是存在)******************");
        System.out.println(file.isDirectory());
    }
}

File类与IO流_第8张图片
6、创建删除相关方法

package C6_File类与IO流.C1_File类;
import java.io.File;
import java.io.IOException;
public class class05_创建删除相关方法 {
    public static void main(String[] args) {
        File file=new File("I:\\360data\\重要数据\\桌面\\新软件.exe");

        System.out.println("******************1、创建文件(不能创建文件夹且路径要存在,否则会抛异常)******************");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("******************2、删除文件或文件夹******************");
        file.delete();

        System.out.println("******************3、创建单级空文件夹******************");
        File dir=new File("I:\\360data\\重要数据\\桌面\\中国");
        if(dir.mkdir())
            System.out.println("文件夹创建成功");
        else
            System.out.println("文件夹创建失败");

        System.out.println("******************4、创建多级空文件夹******************");
        File dirs=new File("I:\\360data\\重要数据\\桌面\\中国\\四川\\成都\\郫都区");
        if(dirs.mkdirs())
            System.out.println("文件夹创建成功");
        else
            System.out.println("文件夹创建失败");
    }
}

File类与IO流_第9张图片

7、File类遍历目录
File类与IO流_第10张图片

package C6_File类与IO流.C1_File类;
import java.io.File;
public class class06_遍历目录 {
    public static void main(String[] args) {
        File dir=new File("I:\\JavaWeb");

        System.out.println("****************1、使用字符串数组****************");
        String[] arr1=dir.list();
        for (String value:arr1){
            System.out.println(value);
        }
        System.out.println("****************2、使用File对象数组****************");
        File[] arr2=dir.listFiles();
        for (File value:arr2){
            System.out.println(value.getName());
        }
    }
}

File类与IO流_第11张图片

递归

File类与IO流_第12张图片

package C6_File类与IO流.C1_File类;
import java.io.File;
public class class07_递归打印多级目录 {
    public static void main(String[] args) {
        File dir=new File("E:\\IntelliJ IDEA 2019.1");
        printDirectory(dir);
    }
    static void printDirectory(File file){
        if(file.isFile()){
            System.out.println(file);
        }
        else if(file.isDirectory()){
            System.out.println("============目录:"+file.getAbsolutePath()+"============");
            File[] files=file.listFiles();
            for(File value:files){
                printDirectory(value);
            }
        }
    }
}

File类与IO流_第13张图片
可以在遍历的基础上,结合其他的方法实现文件查找

package C6_File类与IO流.C1_File类;
import java.io.File;
public class class08_文件搜索 {
    public static void main(String[] args) {
        File dir=new File("E:\\IntelliJ IDEA 2019.1");
        System.out.println("找出该目录下的所有exe文件");
        printDirectory(dir);
    }
    static void printDirectory(File file){
        if(file.isFile()&&file.toString().endsWith(".exe")){
            System.out.println(file);
        }
        else if(file.isDirectory()){
            File[] files=file.listFiles();
            for(File value:files){
                printDirectory(value);
            }
        }
    }
}

File类与IO流_第14张图片

过滤器

过滤器用于过滤File对象,之前使用字符串的endswith找出指定类型的文件,可以用过滤器实现更多功能。
File类与IO流_第15张图片
File类与IO流_第16张图片
可以看到这两个过滤器方法是抽象方法,具体的业务功能需要我们自己编写。

package C6_File类与IO流.C3_过滤器;
import java.io.File;
import java.io.FileFilter;
public class class01_FileFilter{
    public static void main(String[] args) {
        File dir=new File("H:\\");
        printAllFile(dir);
    }

    public static void printAllFile(File dir){
        //传递过滤器对象
        File[] files=dir.listFiles(new Test());
        for (File value:files){
            if(value.isDirectory()){
                printAllFile(value);
            }else if (value.isFile()){
                System.out.println(value);
            }
        }
    }
}
class Test implements FileFilter{
    @Override
    public boolean accept(File pathname) {
        //如果是文件夹返沪true,继续遍历
        if (pathname.isDirectory())
            return true;
        //如果是exe文件也返回true,继续遍历
        return pathname.getName().toLowerCase().endsWith(".exe");
    }
}

File类与IO流_第17张图片

字节流

字符流

Properties集合

缓冲流

转换流

序列化流

打印流

你可能感兴趣的:(Java)