【精通Java篇 | IO流】详讲字节流与常用方法
创始人
2024-01-16 12:32:30
0

在这里插入图片描述


在这里插入图片描述



个人名片:

🐼作者简介:一名大二在校生,喜欢编程🎋
🐻‍❄️个人主页🥇:小新爱学习.
🐼个人WeChat:hmmwx53
🕊️系列专栏:🖼️

  • 零基础学Java——小白入门必备
  • 重识C语言——复习回顾
  • 计算机网络体系———深度详讲
  • 微信小程序开发——实战开发

🐓每日一句:🍭我很忙,但我要忙的有意义!


文章目录

  • 2.字节流
    • 2.1 IO概述和分类
    • 2.2 字节流写数据
    • 字节流写数据的3中方法
    • 2.4 字节流写数据的两个小问题
    • 2.5 字节流写入数据的异常处理
    • 欢迎添加微信,加入我的核心小队,请备注来意


2.字节流

2.1 IO概述和分类

在这里插入图片描述

IO流概述

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。

  • IO:输入/输出(Input/Output)
  • 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备之间传输称为流,流的本质是数据传输。
    在这里插入图片描述

IO流的分类

  • 按照数据的流向
    • 输入流:读数据
    • 输出流:写数据
  • 按照数据类型来分
    • 字节流
      • 字节输入流,字节输出流
    • 字符流
      • 字符输入流,字符输出流

一般情况下,我们说IO流的分类是按照数据类型来分的

字符流与字节流使用技巧:
若果数据通过Window自带的记事本本地软件打开,我们还可以读懂里面的内容就使用字符流,否则使用字节流。如果你不知道该使用哪种类型的流,就使用字节流。

2.2 字节流写数据

字节流抽象基类

  • InputStream
    这个抽象类是表示字节输入流的所有类的超类
    public abstract class InputStream
    extends InputStream
    InputStream 是用来从 CDR 编组流中读取 IDL 类型的 Java API。这些方法供 ORB 用来解组 IDL 类型以及从 Any 中析取 IDL。_array 形式的方法可以直接用来读取 IDL 类型的序列和数组。

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。

有多种构造方法可用来创建对象。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件:

InputStream f = new FileInputStream("C:/java/hello");

也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:

File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f);

创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。

  • OutputStream
    **这个抽象类是表示字节输出流的所有类的超类,输出流接受输出字节并将这些字节发送到某个接收器。 **
    public abstract class OutputStream
    extends OutputStream
  • 子类名特点:子类名称都是以其父类名作为子类名的后缀

FileOutputStream :文件输出流用于将数据写入File

  • FileOutStream(String name):创建文件输出流已指定的名称写入文件

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

使用字符串类型的文件名来创建一个输出流对象:

OutputStream f = new FileOutputStream("C:/java/hello")

也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

File f = new File("C:/java/hello");
OutputStream fOut = new FileOutputStream(f);

创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。

使用字节输出流写数据的步骤

  • 创建字节输出流对象(调用系统功能创建了文件、创建了字节输出流对象、让字节输出流对象那个指向文件
  • 调用字节输出流对象的写数据方法
  • 释放资源(关闭此文件输出流并释放与此相关联的任何系统资源)

代码示例:

package com.ithmm_02;import java.io.FileOutputStream;
import java.io.IOException;public class InputStream {public static void main(String[] args) throws IOException {//创建字节输出流对象//FileOutStream(String name):创建文件输出流已指定的名称写入文件FileOutputStream fos = new FileOutputStream("Io\\fas.txt");/*1.调用系统功能创建文件2.创键字节输出流对象3.让字节输出流对象指向创建好的文件*///void write (int  b),将指定字节写入文件输出流fos.write(97);fos.write(98);fos.write(99);fos.write(55);// void close()//          关闭此输出流并释放与此流有关的所有系统资源。fos.close();//fos.write(121);//Stream Closed}
}

在这里插入图片描述


字节流写数据的3中方法

方法名说明
void write(byte[] b)将 b.length 个字节写入此输出流。
void write(byte[] b, int off, int len)将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
void write(int b)将指定 byte 写入此输出流。
package com.ithmm_02;import java.io.FileOutputStream;
import java.io.IOException;public class FileOutputStreamDemo02 {public static  void main(String[] args) throws IOException {/*void write(byte[] b)	将 b.length 个字节写入此输出流。void write(byte[] b, int off, int len)	将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。void write(int b)	将指定 byte 写入此输出流。*///fileOutStream(String name),创键文件输出以指定的文件名写入文件夹FileOutputStream fos = new FileOutputStream("Io\\fos.txt");//      this(var1 != null ? new File(var1) : null, false);
//        FileOutputStream fos = new FileOutputStream(new File("Io\\fos.txt"));//FileOutStream (File file); 创键文件输出流以写入由指定的File对象表示的文件// FileOutputStream fos2 = new FileOutputStream( new File("Io\\fos.txt"));//        void write(int b)	将指定 byte 写入此输出流。
//        fos.write(97);
//        fos.write(98);
//        fos.write(99);//void write(byte[] b)	将 b.length 个字节写入此输出流。
//        byte[]  bys = {97,98,99, 32, 99};
//        fos.write(bys);// fos.close();// void write(byte[] b)	将 b.length 个字节写入此输出流byte[] bys1 = "abcdefg".getBytes();//        fos.write(bys1);//void write(byte[] b, int off, int len)	将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。fos.write(bys1,0,bys1.length);
//释放fos.close();}
}

2.4 字节流写数据的两个小问题

在这里插入图片描述

2.5 字节流写入数据的异常处理

finally:在异常处理是提供finally块;来执行所有清除操作,比如说IO流中的释放资源
特点:被finally控制的语句一定会执行,除非JVM退出

try{可能出现的异常代码;}catch(异常类名  变量名){异常的处理代码;}finally{执行所有的清除操作;
}

在这里插入图片描述

欢迎添加微信,加入我的核心小队,请备注来意

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

相关内容

热门资讯

快乐精灵作文600字 快乐精灵作文600字五篇  无论是身处学校还是步入社会,大家都接触过作文吧,根据写作命题的特点,作文...
秋天的水果作文 秋天的水果作文(13篇)  无论在学习、工作或是生活中,大家都不可避免地要接触到作文吧,作文是人们以...
试用期个人总结 试用期个人总结范文(精选14篇)  总结是在某一特定时间段对学习和工作生活或其完成情况,包括取得的成...
手的作文 关于手的作文(精选106篇)  在平平淡淡的日常中,许多人都有过写作文的经历,对作文都不陌生吧,根据...
爱就在身边作文 爱就在身边作文 15篇  在日常生活或是工作学习中,大家都写过作文,肯定对各类作文都很熟悉吧,作文是...
最美的人作文600字初中作文 最美的人作文600字初中作文(通用31篇)  在平时的学习、工作或生活中,大家总免不了要接触或使用作...
走在秋天作文 走在秋天作文  在日复一日的学习、工作或生活中,大家都写过作文吧,根据写作命题的特点,作文可以分为命...
尝试作文400字 尝试作文400字7篇  在生活、工作和学习中,大家或多或少都会接触过作文吧,写作文是培养人们的观察力...
无言的感动母爱作文 无言的感动母爱作文  无论是身处学校还是步入社会,大家都有写作文的经历,对作文很是熟悉吧,作文根据写...
河畔作文600字 河畔作文600字(通用20篇)  在平平淡淡的日常中,大家都跟作文打过交道吧,作文根据写作时限的不同...
买海鲜作文 买海鲜作文买海鲜作文1  今天,我和妈妈一起去楼下买海鲜。到了楼下我就急急忙忙地跑出去,看见在公路边...
一盏明灯作文 一盏明灯作文(通用53篇)  在日常生活或是工作学习中,大家都写过作文吧,借助作文可以提高我们的语言...
中学生校园生活作文700字 有关中学生校园生活作文700字汇编8篇  在生活、工作和学习中,大家对作文都不陌生吧,作文根据体裁的...
榕城一绝——软木画作文 -小... 大凡久住福州的人,都知道福州的特种工艺品有“三宝”:脱胎漆器、寿山石雕、软木画,榕城一绝——软木画作...
心理健康的作文 有关于心理健康的作文(通用9篇)  在日常的学习、工作、生活中,大家总免不了要接触或使用作文吧,作文...
描写田园风光的优秀作文300... 描写田园风光的优秀作文300字  在平时的学习、工作或生活中,大家对作文都再熟悉不过了吧,作文是一种...
失败英雄作文 失败英雄作文(通用15篇)  在平平淡淡的日常中,大家或多或少都会接触过作文吧,写作文可以锻炼我们的...
我毕竟走过作文700字 我毕竟走过作文700字(通用17篇)  站在时间的年轮前,我们停下脚步,漠然回首,才发现时间已经过去...
改过自新作文 改过自新作文(通用52篇)  无论是在学校还是在社会中,大家都经常接触到作文吧,作文要求篇章结构完整...
我眼中的“人防标志” 我眼中的“人防标志”我眼中的“人防标志”正文:爸爸在人民防空办公室工作,在那里,我看见了一颗鲜艳夺目...