首页 > 其他分享 >流的分类

流的分类

时间:2024-08-06 10:28:31浏览次数:8  
标签:字符 读取数据 分类 Streams FileOutputStream FileInputStream 字节

流的分类


在Java中,流(Stream)被用于表示数据的输入和输出。Java的流分为几个不同的类别,每种类别都有其特定的用途和特点。以下是Java流的主要分类:

1. 字节流(Byte Streams)

  • 处理原始字节数据。
  • 代表类:InputStreamOutputStream

2. 字符流(Character Streams)

  • 处理字符数据,自动处理字符编码的转换。
  • 代表类:ReaderWriter

3. 输入流(Input Streams)

  • 用于从数据源读取数据。
  • 字节输入流:FileInputStream, ByteArrayInputStream, StringBufferInputStream
  • 字符输入流:FileReader, CharArrayReader, StringReader

4. 输出流(Output Streams)

  • 用于向数据目标写入数据。
  • 字节输出流:FileOutputStream, ByteArrayOutputStream, PrintStream
  • 字符输出流:FileWriter, CharArrayWriter, StringWriter

5. 节点流(Low-Level Streams)

  • 直接连接到数据源或数据目的地的基本流。
  • 例如:FileInputStream, FileOutputStream, FileReader, FileWriter

6. 处理流(High-Level Streams)

  • 在节点流的基础上提供额外的功能,如缓冲、过滤、数据转换等。
  • 字节处理流:BufferedInputStream, BufferedOutputStream, DataInputStream, FilterInputStream
  • 字符处理流:BufferedReader, BufferedWriter, LineNumberReader, FilterReader

7. 管道流(Pipe Streams)

  • 用于线程之间的通信。
  • 代表类:PipedInputStreamPipedOutputStream

8. 数据流(Data Streams)

  • 用于读写原始数据类型,自动转换为字节。
  • 代表类:DataInputStream(从字节流中读取基本数据类型)和 DataOutputStream(向字节流中写入基本数据类型)。

9. 对象流(Object Streams)

  • 用于对象的序列化和反序列化。
  • 代表类:ObjectInputStreamObjectOutputStream

10. 文件通道(File Channels)

  • Java NIO 中的文件通道,提供对文件的高效访问。
  • 代表类:FileChannel

11. 内存映射文件(Memory-Mapped Files)

  • 一种内存访问方式,允许将文件区域映射到内存中。
  • 通过 FileChannel 实现。

12. 散射/聚集通道(Scattering/Gathering Channels)

  • 散射通道允许从多个缓冲区读取数据并写入单一的目标通道。
  • 聚集通道允许从单一的源通道读取数据并写入多个目标缓冲区。

示例用法

以下是使用字节输入流和字节输出流的示例:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamCopyExample {
    public static void main(String[] args) {
        String fromFile = "source.txt";
        String toFile = "destination.txt";

        try (FileInputStream in = new FileInputStream(fromFile);
             FileOutputStream out = new FileOutputStream(toFile)) {
            int byteRead;
            while ((byteRead = in.read()) != -1) {
                out.write(byteRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

示例中,我们从一个文件读取数据并写入到另一个文件,展示了字节流的基本用法。

标签:字符,读取数据,分类,Streams,FileOutputStream,FileInputStream,字节
From: https://www.cnblogs.com/dengyingyuan/p/18344666

相关文章

  • PHP 无限级分类
    1)无限级分类处理<?php//准备分类原始数据$cate_arr=[['id'=>1,'name'=>'电脑','pid'=>0],['id'=>2,'name'=>'手机','pid'=>0],['id'=>3,'nam......
  • mysql 行级锁(按照粒度分类)
    MySQL支持多种锁机制,以确保数据的一致性和完整性。其中,行级锁(Row-LevelLocking)是一种细粒度的锁机制,能够锁定单行数据,从而允许高并发访问。本文将简要介绍MySQL行级锁的概念、使用场景及其优缺点。行级锁的概念行级锁是一种细粒度的锁机制,允许事务在操作数据时仅锁定特定的行,而......
  • 使用vgg16 ————对乳腺超声图像进行分类(两种方法)
    文章目录一、对乳腺超声图像进行分类的重要性二、原始数据三、详细代码解释(方法1)导入库数据预处理和展示读取数据和标签数据集划分创建目录结构复制图像文件统计和显示各个数据集中不同类别的图像数量显示训练集中每个类别的样本图像使用ImageFolder创建训练、验证和测......
  • LeetCode 75 颜色分类
    题目描述给定一个包含红色、白色和蓝色、共n个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数0、1和2分别表示红色、白色和蓝色。必须在不使用库内置的sort函数的情况下解决这个问题。思路可以使用单个指......
  • 基于深度学习的电子邮件分类系统的设计与实现(开题报告)
    毕业论文(设计)开题报告学院:计算机科学与通信工程学院专业:计算机科学与技术学号:年级:学生姓名指导教师论文(设计)题目基于深度学习的电子邮件分类系统的设计与实现与本课题有关的国内外研究情况:垃圾邮件没有一个统一的定义,一般被理解为“不请自到的邮件”还有......
  • 基于深度学习的电子邮件分类系统的设计与实现
    目录引言1第一章绪论21.1课题研究背景和意义21.1.1研究背景21.1.2研究意义21.2国内外研究现状及发展趋势31.2.1国外研究现状31.2.2国内研究现状31.2.3发展趋势41.3论文的主要工作51.4论文的组织安排5第二章相关理论概述72.1开发语言......
  • 基于深度学习的电子邮件分类系统的设计与实现(中期汇报表)
    本科生毕业论文(设计)中期汇报表(学生填写)学院计算机科学与通信工程学院专业计算机科学与技术姓名学号设计地点江苏大学指导教师设计(论文)题目基于深度学习的电子邮件分类系统的设计与实现毕业设计(论文)中期工作小结一、毕业设计的任务本文......
  • Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断
    对于使用GAF-PCNN-MATT、GASF-CNN、GADF-CNN技术来进行多特征输入数据的分类预测或故障诊断,你可以考虑以下步骤:数据准备:准备你的多特征输入数据集,确保数据的质量和一致性。每个样本应该包含多个特征。特征提取:使用GramianAngularField(GAF)、GramianAngularSecto......
  • 解密动态规划:简单易懂的方法和分类大揭秘
    动态规划是一种解决问题的算法思想,它通过将问题划分成多个子问题并进行递推求解,从而得到最优解。以下是简单易懂的动态规划方法以及动态规划的分类:简单易懂的动态规划方法:确定状态:分析问题,找出问题的关键参数,并将其抽象为状态。确定状态转移方程:确定状态之间的关系,即如何从......
  • 5、主板品牌分类介绍:微星 - 计算机硬件品牌系列文章
    微星科技(‌MSI)‌是一家全球知名的IT配件公司,‌专注于主板、‌显卡等产品的研发、‌生产和销售。‌微星科技成立于1986年8月,‌总部位于台湾新北市中和区。‌由徐祥、‌黄金请、‌林文通、‌游贤能、‌卢琪隆五位曾任职于台湾新力公司的工程师共同创办。‌自创立以来,‌微星......