Java基本IO操作(流)

一、 流的概述

1、什么是流

流根据方向不同分为输入流与输出流,参照点为当前程序。输入流用来读取数据,输出流用来写数据。

2、流的分类(2类)

  • 节点流(也叫低级流
    是真实负责读写数据的流,读写操作中必须要有低级流。数据源明确。
  • 处理流(也叫高级流
    读写可以没有高级流,高级流也不能独立存在,必须用于处理其他流,处理其他流的目的是简化读写数据中的操作。

3、低级流和高级流的关系

低级流可以类比为水管,而高级流则可以类比为加在水管上的热水器和净水器。所以会得出以下的结论:

  • 低级流可以单独存在;而高级流必须依赖于低级流而存在。因为低级流是真实读写数据的流,高级流都是处理数据的。
  • 高级流是用于简化数据读写的,所以我们用高级流的时候,需要想一下,这个高级流有什么样的功能。
  • 高级流处理其他流就形成了流的连接。并且有效的组合不同的高级流可以得到叠加的效果。
  • 有高级流的时候,直接关闭高级流就可以了,它会自动把所依赖的低级流关闭(就好像你只需要关闭热水器的开关就可以了)。
  • 下面会分别介绍几个低级流和高级流
    这里写图片描述

4、两个抽象类

  • InputStream
    抽象类,是所有字节输入流的父类,定义了输入流的读取字节的方法,常用的方法如下:

    • int read()
      读取 一个字节,以int形式返回,该int值得“低八位”有效,若返回值为-1,则表示EOF

    • int read(byte[])
      尝试最多读取给定数组的length个字节并存入该数组,返回值为实际读取到的字节量

  • OutputStream
    抽象类,是所有字节输出流的父类,定义了输出流的写入字节的方法,常用的方法如下:

    • void write(int d)
      写出一个字节,写的是给定的int的“低八位”

    • void write(byte[] d)
      将给定的字节数组中的所有字节全部写出

二、低级流

1、文件流

  • FileInputStream
    文件的字节输入流,是一个低级流,该流可以以字节为单位从文件中读取数据。构造方法如下:

    • FileInputStream(File file)
      创建一个从指定File对象表示的文件中读取数据的文件输入流

    • FileInputStream(String name)
      创建用于读取给定的文件系统中的路径名name所指定的文件的文件输入流

  • FileOutputStream
    文件的字节输出流,是一个低级流,该流可以以字节为单位将数据写入文件中。构造方法如下:

    • FileOutputStream(File file)
      创建一个向指定File对象表示的文件中写出数据的文件输出流。(如果指定的文件已经包含内容,会将原有数据全部清除)

    • FileOutputStream(String name)
      创建一个向具有指定名称的文件中写出数据的文件输出流。(如果指定的文件已经包含内容,会将原有数据全部清除)

    • FileOutputStream(File file, boolean append)
      创建一个向指定File对象表示的文件中写出数据的文件输出流。(如果第二个参数为true,则不会清除原数据,而是在文件末尾追加)

    • FileOutputStream(String name, boolean append)
      创建一个向具有指定名称的文件中写出数据的文件输出流。(如果第二个参数为true,则不会清除原数据,而是在文件末尾追加)

基本操作:

int read()
读取 一个字节,以int形式返回,该int值得“低八位”有效,若返回值为-1,则表示EOF

int read(byte[] b)
尝试最多读取给定数组的length个字节并存入该数组,返回值为实际读取到的字节量

void write(int d)
写出一个字节,写的是给定的int的“低八位”

void write(byte[] d)
将给定的字节数组中的所有字节全部写出

void write(byte[] d, int offset, int len)
将指定byte数组中从偏移量offset开始的len个字节写入此文件输出流

示例代码:

输入流

public class FISDemo {

    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("fis.txt");
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值