File类&I/O流:字节流,字符流,缓冲流总结

目录

一,File类

1.概述以及构造方法

    1) 概述 

    2)构造方法  

2.创建文件/目录的(三个方法)

3.判断和获取功能的方法

    1)判断功能

   2)获取功能

4.删除

二,I/O流

1.概述

2.I/O流分类(三种)

2.字节流

3.字符流

小结


一,File类

      在学习I/O流之前我们需要先了解File,知道如何创建文件/目录,如何判断和获取功能,如何删除文件/文件夹。

1.概述以及构造方法

    1) 概述 

             1. File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类

             2. File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较

             3.是文件和目录路径名的抽象表示。

    2)构造方法  

 1.File(String pathName)                根据字符串路径创建一个File对象
 2.File(String parent,String child)   根据字符串父级路径和子级路径创建File对象
 3.File(File parent,String child)       根据File类型父级路径和字符串子级路径创建File对象

public class FileDemo01 {
    public static void main(String[] args) {
        //File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
         
        File f1 = new File("E:\\itcast\\java.txt");
        System.out.println(f1);

        //File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File实例。
        File f2 = new File("E:\\itcast","java.txt");
        System.out.println(f2);

        //File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例。
        File f3 = new File("E:\\itcast");
        File f4 = new File(f3,"java.txt");
        System.out.println(f4);
    }
}

2.创建文件/目录的(三个方法)

public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        //需求1:我要在E:\\itcast目录下创建一个文件java.txt
        File f1 = new File("E:\\itcast\\java.txt");
        System.out.println(f1.createNewFile());
        System.out.println("--------");

        //需求2:我要在E:\\itcast目录下创建一个目录JavaSE
        File f2 = new File("E:\\itcast\\JavaSE");
        System.out.println(f2.mkdir());
        System.out.println("--------");

        //需求3:我要在E:\\itcast目录下创建一个多级目录JavaWEB\\HTML
        File f3 = new File("E:\\itcast\\JavaWEB\\HTML");
//        System.out.println(f3.mkdir());
        System.out.println(f3.mkdirs());
        System.out.println("--------");

        //需求4:我要在E:\\itcast目录下创建一个文件javase.txt
        File f4 = new File("E:\\itcast\\javase.txt");
//        System.out.println(f4.mkdir());
        System.out.println(f4.createNewFile());
    }
}

3.判断和获取功能的方法

    1)判断功能

      boolean isDirectory()    判断是否是文件夹
      boolean isFile()        判断是否是文件
      boolean exists()        判断文件是否存在

   2)获取功能

     String getAbsolutePath()    获取绝对路径
     String getPath()        获取构造方法中的路径
     String getName()        获取文件或文件夹的名称

     String[] list()        获取目录下所有内容,返回字符串数组
     File[] listFiles()        获取目录下所有内容,返回File对象数组

4.删除

boolean delete()        删除文件或文件夹(文件夹必须为空)

注意:如果目录中有内容(目录,文件),不能直接删除,应删掉目录中的内容,再删除目录

二,I/O流

1.概述

IO即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。

Java 中是通过流处理IO 的,那么什么是流?

流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。

当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

 

一般来说关于流的特性有下面几点

先进先出:最先写入输出流的数据最先被输入流读取到。
顺序存取:可以一个接一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据。(RandomAccessFile除外)
只读或只写:每个流只能是输入流或输出流的一种,不能同时具备两个功能,输入流只能进行读操作,对输出流只能进行写操作。在一个数据传输通道中,如果既要写入数据,又要读取数据,则要分别提供两个流。
 

2.I/O流分类(三种)

1.按数据流的方向:输入流、输出流 

      输入与输出是相对于应用程序而言的,比如文件读写,读取文件是输入流,写文件是输出流 。

2.按处理数据单位:字节流、字符流

     字节流和字符流的用法几乎完成全一样,区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。

3.按功能:节点流、处理流

    节点流:直接操作数据读写的流类,比如FileInputStream

    处理流:对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能,例如BufferedInputStream(缓冲字节流)

 1.字节流和字符流的其他区别:

1.字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,但不能处理图像视频等非文本文件。用一句话说就是:字节流可以处理一切文件,而字符流只能处理纯文本文件。
2.字节流本身没有缓冲区,缓冲字节流相对于字节流,效率提升非常高。而字符流本身就带有缓冲区,缓冲字符流相对于字符流效率提升就不是那么大了。

2.字节流

字节缓冲流:

 

 

3.字符流

 字符缓冲流:

 

小结

   

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值