Java工程师必知词汇:字节流

简介: 对于服务端或者是客户端实质上传递的就是一种数据流的处理形式,而所谓的数据流指的就是字节数据。

对于服务端或者是客户端实质上传递的就是一种数据流的处理形式,而所谓的数据流指的就是字节数据。而对于这种流的处理形式在java.io包中提供有两类支持:

  • 字节处理流:OutputStream()(输入字节流)、InputStream()(输入字节流);
  • 字符处理流:Writer(输出字符流)、Reader(输入字符流);

所有的流操作都应采用如下统一的步骤进行,下面以文件处理的流程为例:

  • 如果进行文件读写操作,则一定要通过File类找到一个文件路径;
  • 通过字节流或字符流的子类为父类对象进行实例化;
  • 利用字节流或字符流中的方法实现数据的输入与输出操作;
  • 流的操作属于资源操作,资源操作必须进行关闭处理;

字节输出流:OutputStream
子节的数据以byte类型为主实现的操作,在进行字节内容输出的时候,可以使用OutputStream类完成,这个类的基本定义如下:

public abstract class OutputStream extends Object implements Closeable, Flushable{}

public interface Closeable extends AutoCloseable{
    void close() throws IOException;
}

public interface Flushable{
    void flush() throws IOException;
}

OutputStream类定义的是一个公共的输出操作标准,在这个操作标准中定义有三个内容输出的方法:

  • 输出单个字节数据:public abstract void write(int b) throws IOException;
  • 输出一组字节数据:public void write(byte[] b) throws IOException;
  • 输出部分字节数据:public void write(byte[] b, int off, int len) throws IOException;

需要注意的是OutputStream是一个抽象类,而抽象类如果想要获得实例化对象就需要通过子类实例的向上转型完成。如果想要进行文件内容处理操作,可以使用子类FileOutputStream。
FileOutputStream的构造方法:

  • 【覆盖】构造方法:public FileOutputStream(File file) throws FileNotFoundException;
  • 【追加】构造方法:public FileOutputStream(File file, boolean append) throws FileNotFoundException

字节输入流:InputStream
InputStream类主要实现的就是字节数据读取,该类定义如下:

public abstract class InputStream extends Object implements Closeable{}

在InputStream类中定义有如下几个核心方法:

  • 读取单个字节数据: public abstract int read() throws IOException、如果读取到底,返回-1;
  • 读取一组字节数据: public int read(byte[] b) throws IOException、返回的读取的个数,如果读到底,返回-1;
  • 读取一组字节数据的部分内容: public int read(byte[] b, int off, int len) throws IOException;

InputStream类属于一个抽象类,这时应该依靠它的子类来进行对象实例化,如果要从文件读取可以使用FileInputStream子类。
FileInputStream的构造方法

  • 构造方法:public FileInputStream(File file) throws FileNotFoundException;

  • 从JDK1.9开始,InputStream类中增加了一个新的方法:public byte[] readAllBytes() throws IOException;

|参考资料|

[1] 阿里云大学Java视频课程

相关文章
|
18天前
|
架构师 前端开发 Java
Java开发工程师的职业规划应该是什么样的?
Java开发工程师的职业规划涵盖多个阶段,包括初入行业(0-1年)、技能提升(1-3年)、技术专家(3-5年)及管理或专家路线选择(5年以上)。各阶段设定了明确的技能要求与职业目标,从掌握Java基础、常用框架到深入研究高级技术、微服务架构乃至担任管理职务或成为技术专家。通过持续学习与实践,结合个人兴趣,Java工程师可在技术或管理领域找到合适的发展方向,最终实现职业成功。
240 83
|
18天前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
42 18
|
16天前
|
人工智能 前端开发 Java
Java开发工程师转哪个行业比较好?
Java开发工程师转哪个行业比较好?
70 2
|
2月前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
16天前
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
27 0
|
2月前
|
存储 缓存 Java
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
45 3
|
4月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
【6月更文挑战第26天】Java IO流涵盖字节流和字符流,字节流处理二进制数据,如图像,由InputStream/OutputStream家族管理;字符流处理文本,基于Reader/Writer,适于文本文件。在文件复制示例中,字节流用FileInputStream/FileOutputStream,字符流用FileReader/FileWriter。选择流类型取决于数据类型和处理需求,文本文件优选字符流,二进制数据则选字节流。
55 6
|
3月前
|
Java
图解java工程师学习路线
图解java工程师学习路线
187 0
|
4月前
|
存储 编解码 安全
一篇文章讲明白java字符流字节流
一篇文章讲明白java字符流字节流
16 0
|
4月前
|
存储 自然语言处理 Java
Java IO流完全手册:字节流和字符流的常见应用场景分析!
【6月更文挑战第26天】Java IO流涵盖字节流和字符流,字节流用于二进制文件读写及网络通信,如图片和音频处理;字符流适用于文本文件操作,支持多语言编码,确保文本正确性。在处理数据时,根据内容类型选择合适的流至关重要。
51 0
下一篇
无影云桌面