01_01_java基础08_File类和IO流

1java.io.File类的使用

1.1概述

  • 文件的路径表示方式:
    • 方式1:绝对路径:以windows操作系统为例,包括盘符在内的文件或文件目录的完整路径。
    • 方式2:相对路径:相对于某一个文件目录来讲的相对的位置。
      • 在IDEA中,如果使用单元测试方法:相对于当前的module来讲
      • 如果使用main()方法:相对于当前的project来讲

1.2构造器

  • public File(String pathname) :以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
  • public File(String parent, String child) :以parent为父路径,child为子路径创建File对象。
  • public File(File parent, String child) :根据一个父File对象和子文件路径创建File对象

2 IO流原理及流的分类

2.1 Java IO原理

2.2流的分类

java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

  • 按数据的流向不同分为:输入流输出流
    • 输入流 :把数据从其他设备上读取到内存中的流。
      • 以InputStream、Reader结尾
    • 输出流 :把数据从内存 中写出到其他设备上的流。
      • 以OutputStream、Writer结尾
  • 按操作数据单位的不同分为:字节流(8bit)字符流(16bit)
    • 字节流 :以字节为单位,读写数据的流。
      • 以InputStream、OutputStream结尾
    • 字符流 :以字符为单位,读写数据的流。
      • 以Reader、Writer结尾
  • 根据IO流的角色不同分为:节点流处理流
    • 节点流:直接从数据源或目的地读写数据
      在这里插入图片描述
    • 处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
    • 01_01_java基础08_File类和IO流_第1张图片
      01_01_java基础08_File类和IO流_第2张图片

3节点流之一:FileReader\FileWriter

3.3关于flush(刷新)

因为内置缓冲区的原因,如果FileWriter不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要flush() 方法了。

  • flush() :刷新缓冲区,流对象可以继续使用。
  • close() :先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

注意:即便是flush()方法写出了数据,操作的最后还是要调用close方法,释放系统资源。

4.节点流之二:FileInputStream\FileOutputStream

5 处理流之一:缓冲流

6 处理流之二:转换流

6.3 InputStreamReader 与 OutputStreamWriter

  • InputStreamReader
  • 转换流java.io.InputStreamReader,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。
  • 构造器
    • InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流。
    • InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。

7 处理流之三/四:数据流、对象流

你可能感兴趣的:(Java再记录,java,开发语言)