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视频课程

相关文章
|
4月前
|
架构师 前端开发 Java
Java开发工程师的职业规划应该是什么样的?
Java开发工程师的职业规划涵盖多个阶段,包括初入行业(0-1年)、技能提升(1-3年)、技术专家(3-5年)及管理或专家路线选择(5年以上)。各阶段设定了明确的技能要求与职业目标,从掌握Java基础、常用框架到深入研究高级技术、微服务架构乃至担任管理职务或成为技术专家。通过持续学习与实践,结合个人兴趣,Java工程师可在技术或管理领域找到合适的发展方向,最终实现职业成功。
574 83
|
3月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
42 3
|
3月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
71 3
|
3月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
52 1
|
3月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
126 1
|
3月前
|
Java 程序员 编译器
|
4月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
83 18
|
4月前
|
人工智能 前端开发 Java
Java开发工程师转哪个行业比较好?
Java开发工程师转哪个行业比较好?
360 2
|
5月前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
4月前
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
62 0