JavaSE-File类与IO流

目录

一、File类

二、IO流

三、文件字节流

四、文件字符流

五、缓冲流

六、转换流

七、对象流

八、打印流与基本输入输出流

九、JDK7之后的try...catch语句


一、File类

java.io.File类是系统中文件或目录的抽象表示。

  1. File类的构造器

    File file = new File("D:/test/abc.txt");
    File file1 = new File("D:/test/");
    ​
    File file2 = new File("D:/test/","abc.txt");
    ​
    File file3 = new File(file1,"abc.txt");
  2. 相关方法:

  • public String getName() :返回由此File表示的文件或目录的名称。

  • public long length() :返回由此File表示的文件的长度。

  • public String getPath() :将此File转换为路径名字符串。

  • public long lastModified():返回File对象对应的文件或目录的最后修改时间(毫秒值)

  • public String getPath() :将此File转换为路径名字符串。

  • public String getAbsolutePath() :返回此File的绝对路径名字符串。

  • String getCanonicalPath():返回此File对象所对应的规范路径名。

    File类可以使用文件路径字符串来创建File实例,该文件路径字符串既可以是绝对路径,也可以是相对路径。

    默认情况下,系统总是依据用户的工作路径来解释相对路径,这个路径由系统属性“user.dir”指定,通常也就是运行Java虚拟机时所作的路径。

    • 绝对路径:从盘符开始的路径,这是一个完整的路径。

    • 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。

    • 规范路径:所谓规范路径名,即对路径中的“..”等进行解析后的路径名

  • public boolean exists() :此File表示的文件或目录是否实际存在。

  • public boolean isDirectory() :此File表示的是否为目录。

  • public boolean isFile() :此File表示的是否为文件。

  • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。

  • public boolean delete() :删除由此File表示的文件或目录。 只能删除空目录。

  • public boolean mkdir() :创建由此File表示的目录。

  • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

  • public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

  • public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。

  • public File[] listFiles(FileFilter filter):返回所有满足指定过滤器的文件和目录。如果给定 filter 为 null,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的 FileFilter.accept(java.io.File) 方法返回 true 时,该路径名才满足过滤器。如果当前File对象不表示一个目录,或者发生 I/O 错误,则返回 null。

二、IO流

  1. 概念理解:输入输出流,表示数据的传输

  2. IO流的分类:

    ⭕️根据流向划分(参照物是内存或程序)

                👉 输入流:把硬盘等介质的数据传输到内存。-读入

                👉 输出流:把数据从内存传输到硬盘等介质 。- 写出

        ⭕️根据操作的数据单位划分

                👉 字节流

                👉 字符流

        ⭕️根据角色划分

                👉 节点流:对接数据源

                👉 处理流:是对其他流的包装处理,使其更满足个性需求,比如使其更高效。

      3.IO流的超类

                👉 InputStream 字节输入流的超类

                👉 OutputStream 字节输出流的超类

                👉 Reader 字符输入流的超类

                👉 Writer 字符输出流的超类

三、文件字节流

  1. FileInputStream文件字节输入流:用于把文件中的数据读取到程序中来

    //1.构造器
    FileInputStream(String path);
    FileInputStream(File path);
    //读取方法
    int read();//读取一个字节,返回-1表示达到文件末尾
    int read(byte[] bys);//读取字节数据到字节数组中,并返回读取到的字节个数,返回-1表示达到文件末尾
    //关闭流
    void close();
  2. FileOutputStream文件字节输出流:用于把程序中的数据写出到文件中去。

    //1.构造器
    FileOutputStream(String path);
    FileOutputStream(File path);
    FileOutputStream(String path,boolean append);//第二个参数true表示追加写入
    //写的方法
    void write(int b);//写一个字节
    void wirte(byte[] bys,int off,int len);//写一个字节数组的一部分
    //关闭流
    void close();

四、文件字符流

  1. FileReader文件字符输入流

    //1.构造器
    FileReader(String path);
    FileReader(File path);
    //读取方法
    int read();//读取一个字符,返回-1表示达到文件末尾
    int read(char[] bys);//读取字节数据到字符数组中,并返回读取到的字符个数,返回-1表示达到文件末尾
    //关闭流
    void close();
  2. FileWriter文件字符输出流

    //1.构造器
    FileWriter(String path);
    FileWriter(File path);
    FileWriter(String path,boolean append);//第二个参数true表示追加写入
    //写的方法
    void write(int b);//写一个字符
    void wirte(char[] bys,int off,int len);//写一个字符数组的一部分
    //关闭流
    void close();
  3. 字符输出流的flush方法和close方法

    👉💓文件字符输出流默认自带一个8k大小的数据缓冲区,写出数据时先进入缓冲区,当缓冲区满后才会自动写出到文件中,目的是提高IO性能。

    • flush方法:刷新缓冲区,把数据直接写出去。

    • close方法:先刷新缓冲区,再关闭流

五、缓冲流

        🚀缓冲流又称为高效流,默认内置一个8k大小的缓冲区。缓冲流是一种处理流,是对其他流的包装处理,使其更高效。

  1. BufferedInputStream 高效字节输入流

  2. BufferedOutputStream 高效字节输出流

    //创建流对象
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:/test/abc.txt"));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:/test/copy.txt"));
    //读写数据
    byte[] bys = new byte[1024];
    int len;
    while((len=bis.read(bys))!=-1){
        bos.write(bys,0,len);
    }
    //关闭流
    bos.close();
    bis.close();
  3. BufferedReader 高效字符输入流

  4. BufferedWriter 高效字符输出流

    //创建流对象
    BufferedReader br = new BufferedReader(new FileReader("abc.txt"));
    BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));
    //读写数据--一次读写一行字符串
    String line = null;
    while((line=br.readLine())!=null){//读一行字符串
        bw.write(line);//写一个字符串
        bw.newLine();//写一个换行符
    }
    //释放资源
    bw.close();
    br.close();

六、转换流

        🛸转换流把字节流转换为字符流。转换流也是字符流,字符流的本质是字节流+编码。

  • InputStreamReader :把字节输入流转换为字符输入流

  • OutputSteamWriter :把字节输出流转换为字符输出流

    new InputStreamReader(new FileInputStream("abc.txt"),"GBK");//使用指定编码读取文件
    new OutputStreamWriter(new FileOutputSrtream("aaa.txt"),"UTF-8");//使用指定的编码写出字符数据

七、对象流

  1. 序列化与反序列化

    • 序列化:把Java对象转换为字节序列以便持久存储

    • 反序列化:把字节序列还原为Java对象

    • 注意:要被序列化的对象的类必须实现序列化接口Serializable

  2. 对象流

        💡用于把序列化的对象进行持久存储,或重构java对象。

    • ObjectInputStream 对象输入流

    • ObjectOutputStream 对象输出流

    //Student类实现序列化接口后,此类的对象才可以被序列化
    public class Student implements Serializable{
        //显示给出序列化版本号
        private static final long serialVersionUID = 1234L;
        private String name;
        private int age;
        transient int password = 123;//transient关键字修饰的属性不能被序列化
        //.............
    }

八、打印流与基本输入输出流

  1. 打印流

    • PrintStream字节打印流

    • PrintWriter字符打印流

      PrintStream ps = new PrintStream("abc.txt");
      //特有方法
      ps.print(123);
      ps.println("hello");
      ps.println(true);
  2. 标准输入输出流

    • System.out标准输出流,输出内容到控制台

    • System.in 标准输入流,从键盘接收数据

九、JDK7之后的try...catch语句

        🔴可以自动释放资源,格式:

try(
    //需要释放资源的对象声明
){
  //可能发生异常的代码  
}catch(要捕获的异常类型 变量){
    //捕获异常后的处理逻辑
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值