详解Java的IO流Part1:字节输入流(InputStream)和字节输出流(OutputStream)

计算机上数据的传输可以看做是一种数据的流动 按照流动的方向 以内存为基准 分为 输入input 和 输出output
即 流向内存是输入流 流出内存的输出流

流:数据(字符 字节)
1个字符=2个字节 1个字节=8个二进制位

Java中I/O操作是使用 java.io 包下的内容进行输入输出操作

  • 输入也叫做读取数据 将硬盘中的数据读取到内存中使用
  • 输出也叫做作写出数据 将内存中的数据写入到硬盘中保存

一切皆为字节

一切文件数据(文本 图片 视频等)在存储时都是以二进制数字的形式保存的 都是一个一个的字节
(因为计算机只能识别0101的二进制)
在传输时一样如此 因此 字节流可以传输任意类型的文件数据
在操作流的时候 无论使用什么样的流对象 底层传输的始终为二进制数据
在这里插入图片描述


一、字节输入流 InputStream

java.io.InputStream 抽象类是表示字节输入流的所有类的超类(父类)
可以读取字节信息到内存中
它定义了字节输入流的基本共性功能方法

FileInputStream 文件字节输入流 ★

InputStream有很多子类 FileInputStream是其中一个
java.io.FileInputStream继承了InputStream
作用:将硬盘的文件中的数据读取到内存中

构造方法:

FileInputStream(String name) : 通过打开与实际文件的连接来创建一个FileInputStream  该文件由文件系统中的路径名 name命名
FileInputStream(File file) : 通过打开与实际文件的连接来创建一个FileInputStream  该文件由文件系统中的File对象 file命名

参数(读取文件的数据源):
String name:文件的路径
File file:文件

构造方法内部执行流程:
1、创建一个FileInputStream对象
2、将FileInputStream对象指向构造方法中要读取的文件


读取数据的原理(硬盘–>内存):Java程序 --> JVM --> OS(操作系统) --> OS调用读取数据的方法来读取文件

字节输入流 - 使用步骤★:
1、创建FileInputStream对象 构造方法中绑定要读取的数据源
2、调用FileInputStream对象中的read()方法 读取文件
3释放资源(流的使用会占用一定的内存 使用完毕要将内存清空 提高程序的效率)


读字节方法:

1、读取字节: read()方法 每次读取一个字节的数据 转换为int类型

指针默认指向第一个字节
每读取一个字节之后指针向后移动一位
当读取到文件末尾(文件末尾有一个看不见的结束标记) 则返回 -1

public static void main(String[] args) throws IOException {
   
  // 创建FileInputStream对象 构造方法中绑定要读取的数据源
    FileInputStream fis=new FileInputStream("F:\\IdeaProjects\\filetest\\a.txt");
    // 调用FileInputStream对象中的read()方法 读取文件
    // read()方法 每次读取一个字节的数据 提升为int类型 读取到文件末尾返回 -1
    int read = fis.read();
    System.out.println(read);// 97
    read = fis.read();
    System.out.println(read);// 98
    read = fis.read();
    System.out.println(read);// 99
    read = fis.read();
    System.out.println(read);// -1 到结尾了
    // 释放资源
    fis.close();
}

用循环简化步骤:

(read=fis.read())!=-1 布尔表达式:
1、fis.read():读取一个字节
2、read=fis.read():将读取到的字节赋值给变量read
3、(read=fis.read())!=-1 判断read遍历是否不等于-1

public static void main(String[] args) throws IOException {
   
    // 创建FileInputStream对象 构造方法中绑定要读取的数据源
    FileInputStream fis=new FileInputStream(
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值