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
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
168 9
|
4月前
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
176 2
|
8月前
|
机器学习/深度学习 Java PyTorch
Java工程师如何理解张量?
刚接触AI和PyTorch,理解“张量(Tensor)”是入门关键。张量可类比为Java中的多维数组,但更强大,尤其在AI领域支持GPU加速、自动求导等特性。它不仅能高效存储数据,还能进行复杂运算,是深度学习的核心数据结构。掌握张量的维度、数据类型及GPU加速特性,对学习PyTorch至关重要。
175 3
|
12月前
|
Java 程序员 编译器
|
12月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
140 3
|
12月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
385 3
|
12月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
152 1
|
12月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
436 1
|
人工智能 前端开发 Java
Java开发工程师转哪个行业比较好?
Java开发工程师转哪个行业比较好?
743 2
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
158 0