java io流,io流是什么;应用场景;io流分类,以及使用分类场景;io流字节输入输出流,io字符输入输出流;不同输入输出流使用,使用场景;缓冲流

java中的IO流(字符流,字节流)及一些常见面试题 目录 一.File类 1.1File类的概述与构造方法 1.1.1File类的介绍 1.1.2File类的构造方法 1.2File类的常用方法 1.2.1File类的创建功能 1.2.2File类的判断与获取功能 1.2.3File类的删除功能​ 1.2.4绝对路径与相对路径 1.3递归 1.3.1递归介绍 1.3.2递归的注意事项 1.3.3递归遍历目录 二 .IO流 2.1IO流概述和分类 2.1.1IO流介绍 2.1.2IO流的分类 2.1.3IO流的使用... 阅读详情

Java I/O 流全解

1. I/O 流是什么?

I/O 流(Input/Output Stream)是 Java 中用于 数据传输 的抽象模型,I 表示输入(读数据),O 表示输出(写数据),流表示数据的连续传输。

本质:程序和数据源(文件、网络、内存、设备等)之间传输数据的通道。


2. I/O 流的应用场景

  • 文件读写(文本、二进制文件)

  • 网络传输(Socket)

  • 数据序列化(对象持久化)

  • 进程通信(管道流)

  • 内存缓存数据处理(数组流、字符串流)

  • 控制台输入输出(System.in/out)


3. I/O 流的分类

Java I/O 流按不同维度分类:

3.1 按方向

类型作用常用类
输入流(InputStream / Reader)从数据源读数据到程序FileInputStream, BufferedReader
输出流(OutputStream / Writer)从程序写数据到目标FileOutputStream, BufferedWriter


3.2 按处理单位

类型作用常用类场景
字节流(InputStream / OutputStream)按字节处理数据FileInputStream, FileOutputStream二进制文件(图片、音视频)
字符流(Reader / Writer)按字符处理数据(自动编码/解码)FileReader, FileWriter文本文件(TXT、CSV、JSON)


3.3 按功能

类型作用常用类场景
节点流(直接连接数据源)直接读写数据源FileInputStream、FileReader直接访问文件、内存
处理流(套在节点流外)增强功能BufferedReader、DataInputStream缓冲、数据类型读写


4. 核心 I/O 流体系结构

        字节流                   字符流
输入流  InputStream              Reader
输出流  OutputStream             Writer


5. 字节流(Byte Streams)

字节流的父类:

  • InputStream(字节输入)

  • OutputStream(字节输出)

示例:文件字节读取与写入

import java.io.*;

public class ByteStreamDemo {
    public static void main(String[] args) throws IOException {
        // 写入文件
        try (FileOutputStream fos = new FileOutputStream("test.bin")) {
            fos.write(new byte[]{65, 66, 67}); // 写入 ABC
        }

        // 读取文件
        try (FileInputStream fis = new FileInputStream("test.bin")) {
            int b;
            while ((b = fis.read()) != -1) {
                System.out.print((char) b);
            }
        }
    }
}

📌 应用场景:图片、音频、视频、压缩包等二进制文件。


6. 字符流(Character Streams)

字符流的父类:

  • Reader(字符输入)

  • Writer(字符输出)

示例:文本读取与写入

import java.io.*;

public class CharStreamDemo {
    public static void main(String[] args) throws IOException {
        // 写入文件
        try (FileWriter fw = new FileWriter("test.txt")) {
            fw.write("你好,Java IO");
        }

        // 读取文件
        try (FileReader fr = new FileReader("test.txt")) {
            int ch;
            while ((ch = fr.read()) != -1) {
                System.out.print((char) ch);
            }
        }
    }
}

📌 应用场景:TXT、CSV、JSON 等文本文件。


7. 不同输入输出流的使用场景

类类型场景
FileInputStream / FileOutputStream字节流二进制文件读写
FileReader / FileWriter字符流文本文件读写
BufferedInputStream / BufferedOutputStream缓冲字节流频繁读写二进制文件,提高性能
BufferedReader / BufferedWriter缓冲字符流按行读取文本文件
DataInputStream / DataOutputStream数据流读写基本数据类型
ObjectInputStream / ObjectOutputStream对象流对象序列化与反序列化
ByteArrayInputStream / ByteArrayOutputStream内存字节流在内存中处理二进制数据
StringReader / StringWriter内存字符流在内存中处理字符串数据


8. 缓冲流(Buffered Streams)

缓冲流是处理流的一种,内部有缓冲区,减少了磁盘 I/O 次数,提高性能。

例:BufferedReader 按行读取文本

import java.io.*;

public class BufferedDemo {
    public static void main(String[] args) throws IOException {
        try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        }
    }
}

📌 适用场景:

  • 文件较大且频繁读取

  • 按行读取文本

  • 批量写入文件


9. I/O 流选择建议

场景推荐类
文本文件(小/中等大小)BufferedReader / BufferedWriter
二进制文件BufferedInputStream / BufferedOutputStream
按基本类型读写DataInputStream / DataOutputStream
对象存储ObjectOutputStream / ObjectInputStream
大文件高性能Java NIO(Files、Channel)

10. Java I/O 流分类结构图

                    ┌─────────────── 顶层抽象类 ───────────────┐
                    │                                         │
              InputStream (字节输入)                OutputStream (字节输出)
                    │                                         │
       ┌────────────┴─────────────┐                ┌───────────┴───────────────┐
       │                          │                │                           │
FileInputStream          ByteArrayInputStream   FileOutputStream         ByteArrayOutputStream
BufferedInputStream      ObjectInputStream      BufferedOutputStream     ObjectOutputStream
DataInputStream          PipedInputStream       DataOutputStream         PipedOutputStream
...

                    ┌─────────────── 顶层抽象类 ───────────────┐
                    │                                         │
                 Reader (字符输入)                   Writer (字符输出)
                    │                                         │
       ┌────────────┴─────────────┐                ┌───────────┴───────────────┐
       │                          │                │                           │
FileReader               CharArrayReader     FileWriter                CharArrayWriter
BufferedReader           StringReader        BufferedWriter            StringWriter
PipedReader              InputStreamReader   PipedWriter               OutputStreamWriter

分类记忆技巧

  1. 字节流(InputStream / OutputStream)

    • 处理二进制数据(图片、音视频等)

    • FileInputStream / FileOutputStream → 基础文件读写

    • BufferedInputStream / BufferedOutputStream → 缓冲提高效率

    • DataInputStream / DataOutputStream → 读写基本类型

    • ObjectInputStream / ObjectOutputStream → 对象序列化

  2. 字符流(Reader / Writer)

    • 处理文本文件(自动编码解码)

    • FileReader / FileWriter → 基础文本读写

    • BufferedReader / BufferedWriter → 按行读取/批量写入

    • InputStreamReader / OutputStreamWriter → 字节与字符转换(可指定编码)

  3. 缓冲流

    • 外层包装,提高性能(减少系统 I/O 调用次数)

    • 常见:BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream

Java-IO流使用场景 Java IO 流是Java编程中非常重要的组成部分,用于处理文件读写、网络通信等数据传输任务。这些示例覆盖了Java IO流的基本使用场景。3.1 使用缓冲流读取文件。3.2 使用缓冲流写入文件。5.1 读取字节数组。5.2 写入字节数组。6.1 读取字符数组。6.2 写入字符数组。 阅读详情

相关推荐

java IO流精讲 JAVA IO流实例开发

java IO流精讲 JAVA IO流实例开发

IO流详解及常用方法

此时, 在try结构执行结束的时候, 会自动的调用AutoClosable接口实现类中的close方法, 进行流的关闭。从流中流动的数据单位来分, 是一个字节流, 流中流动的数据是以字节为单位的。从流中流动的数据单位来分, 是一个字符流, 流中流动的数据是以字符为单位的。从方向来说, 是一个输入流, 数据是从文件中流动到程序中, 是为了读取文件中的数据的。从方向来说, 是一个输入流, 数据是从文件中流动到程序中, 是为了读取文件中的数据的。流: 指的是一串流动的数据, 在数据在流中按照指定的方向进行流动。

千锋教育 1789

从GAN生成失败案例出发:为什么你的AI画不准位置?CoordConv保姆级解决方案

本文深入探讨了GAN生成图像时位置偏移问题的根源,并提供了CoordConv的保姆级解决方案。通过分析传统CNN在空间坐标建模上的缺陷,详细介绍了CoordConv的原理、实现步骤及在StyleGAN2等模型中的实战应用,显著提升了医学图像生成等任务的定位精度。

pp12345的博客 205

Java IO流

IO指的是输入流(input)和输出流(Output),流是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载。输入流:数据流从数据源到程序(以InputStream、Reader结尾)输出流:数据流从程序到目的地(OutputSttream、Writer结尾)字节流:以字节为单位处理数据(以Stream结尾)字符流:以字符为单位处理数据(Reader,Writer结尾)节点流:可以直接从数

weixin_52957373的博客 733

Ubuntu22.04+Docker一键部署Autoware Universe避坑指南(附鱼香ROS配置)

本文详细介绍了在Ubuntu22.04系统中使用Docker一键部署Autoware Universe的完整流程,包括鱼香ROS工具链配置、Docker环境优化及VSCode开发环境集成。通过实战指南帮助开发者快速搭建自动驾驶开发环境,解决常见部署问题,提升开发效率。

weixin_29254673的博客 417

SAPGUI excel 导出时遇到的运行时错误:STRING_SIZE_TOO_LARGE

当报表导出需求远超单一 XLSX 文件的物理承载力时,与其在 SAPGUI 中硬拼 2 GB 限制,不如把分页、过滤、流式写入作为设计前提。掌握 ABAP2XLSX 或 CSV + Power Query 等工具链,既能满足审计合规,又能让应用服务器远离的噩梦。祝你在下一次导出海量数据时,既高效又优雅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 642

java中io流的使用场景

【代码】java中io流的使用场景。

qq_39289387的博客 534

Python数据分析师必备:OpenClaw开启Pandas清洗脚本自动生成新时代

本文介绍了OpenClaw这一AI智能体框架如何帮助Python数据分析师高效完成数据清洗工作。OpenClaw通过自然语言交互理解用户需求,自动生成Pandas清洗脚本,显著提升了数据清洗效率,降低了技术门槛。文章详细阐述了OpenClaw的工作原理、实战应用步骤及其在电商、金融、医疗等行业中的成功案例。相比传统手动编写脚本方式,OpenClaw能快速生成规范准确的清洗代码,使数据分析师能更专注于业务洞察。该工具为数据驱动决策提供了可靠支持,是数据分析领域的重要创新。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 230

一文了解IO流

文件读写:这是IO流最常见的用途之一。例如,FileInputStream和FileOutputStream用于处理文件的二进制数据,而FileReader和FileWriter则用于处理字符数据。IO流根据处理数据的类型可以分为字节流(以InputStream和OutputStream为基础)和字符流(以Reader和Writer为基础)。管道通信:Java IO提供了管道相关的流(PipedInputStream和PipedOutputStream),允许在不同线程之间进行数据传输,实现线程间的通信。

东篱君的博客 1069

C#中通过Mapster实现轻量级高效对象映射器:从零到精通

本文介绍了.NET生态中高性能对象映射库Mapster的完整使用指南。从基础安装(通过NuGet包)到快速入门示例,展示了如何实现简单对象映射。进一步讲解了自定义映射规则、命名不一致属性的处理方式,以及如何在ASP.NET Core中集成Mapster服务。针对复杂场景,详细解析了嵌套对象映射的配置技巧,并提供了性能优化方案(如预编译映射器)和调试技巧(启用调试模式、捕获映射异常)。通过完整的代码实践,帮助开发者高效解决从基础到高级的对象映射需求。

墨夶的博客 742

SVN使用:使用TortoiseSVN遇到提示请执行“清理”命令的解决方法

作为程序员来说,在团队开发过程中关于代码管理的工具使用并不陌生,比较常用的代码合并管理工具如:Git、SVN等,虽然相关工具的使用并不复杂,但是还是要掌握常用的使用方法,尤其是相关的第三方软件的使用也是极为重要的,而且有时候使用这些三方软件来进行代码管理的时候也会遇到一些问题。本篇博文就来分享一下在SVN使用的时候使用TortoiseSVN遇到提示请执行“清理”命令的解决方法,方便查阅使用。

全沾软贱开发攻城狮 1万+

java IO流

目录 序 一、IO流开篇 1、概念 2、流的分类 3、IO流的作用 4、IO流的使用场景 二、字节流 1、字节流抽象基类 2、字节流写数据 (1)基本步骤 (2)三种方式 (3)两个问题 (4)异常处理 3、字节缓冲流 (1)基本分类&概述 (2)构造方法 (3)代码演示 三、字符流 1、概念 2、分类 (1)字符流体系图 (2)字符输入流(Reader) (3)字符输出流(Writer) 3、字符缓冲流 (1)概念 (2)构造方法 (3)...

D大调奏鸣曲_第七序章_de博客 8万+

Android CPU调度优化完整分析 - 小白入门到精通

本文全面解析Android CPU调度优化技术,从硬件架构到内核实现。首先介绍ARM big.LITTLE架构的硬件拓扑和性能层级,包括大核、小核和DynamIQ技术。然后深入讲解CPU性能状态管理(P-states和C-states)和硬件计数器支持。内核层部分详细分析调度器架构,包括调度类层次结构和核心调度实体实现,重点剖析CFS调度器的虚拟运行时间计算、红黑树操作和PELT负载跟踪算法。最后探讨负载均衡触发条件和实现机制。全文循序渐进,为开发者提供完整的Android CPU调度优化知识体系。

xhxh510573522125的博客 154

Java中的IO流-最全最基础的IO流概述和简介

Java中的IO流是用于处理数据输入和输出的核心机制。通过应用IO流可以使Java程序能够与外部世界(如磁盘文件、网络、硬件设备等)进行数据交互。IO流的全称为输入/输出流(Input/Output Stream),它是Java编程语言中用于数据传输的一种抽象模型。流可以被想象为数据的连续流动,就像水通过管道一样,数据通过流从一个地方流向另一个地方。文件流是用来连接我们的程序与文件之间的"管道",用来读写文件中的数据。

是程序喵呀 4646

10、边缘智能学习技术解析

本文深入解析了边缘智能学习技术的四大核心方法:联邦学习、DNN拆分、迁移学习和八卦学习。文章从人类大脑的学习机制出发,引出边缘级智能的重要性,并详细阐述各类技术的架构、优势、挑战及适用场景。通过对比分析,展示了不同技术在隐私性、效率、可扩展性等方面的特性,并探讨了未来融合多种技术、软硬件协同优化及应用领域拓展的发展趋势,为边缘智能在物联网与人工智能领域的应用提供了系统性参考。

ppp33的博客 117

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java基础:IO流

目录序一、IO流开篇1、概念2、流的分类3、IO流的作用4、IO流的使用场景二、字节流1、字节流抽象基类2、字节流写数据(1)基本步骤(2)三种方式(3)两个问题(4)异常处理3、字节缓冲流(1)基本分类&概述(2)构造方法(3)代码演示三、字符流1、概念2、分类(1)字符流体系图(2)字符输入流(Reader)(3)字符输出流(Writer)3、字符缓冲流(1)概念(2)构造方法(3)代码演示(4)字符缓冲流特有功能四、IO特殊操作流。

weixin_62944431的博客 2210

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java IO流学习总结三十:输入输出流

转载请标明出处:http://blog.youkuaiyun.com/zhaoyanjun6/article/details/54292148 本文出自【赵彦军的博客】 Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 根据处...

怪咖的博客 3088

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【愚公系列】2023年10月 Java教学课程 060-IO流之字节缓冲流

Java中IO流(Input/Output stream)用于处理输入和输出数据的机制,它包括输入流和输出流两个部分。输入流用于从外部读取数据,输出流用于向外部写入数据。Java中的IO流可以让我们从文件、网络、控制台等地方读取数据和输出数据。IO流主要分为字节流和字符流两类,字节流适用于处理二进制数据,而字符流适用于处理文本数据。Java中的IO流分层结构非常清晰,所有的输入流和输出流都是从抽象基类InputStream和OutputStream派生出来的。

愚公智库 3万+

IO流:字节流、字符流、缓冲流、转换流、数据流、序列化流 --Java学习笔记

在try-catch-finally中无论代码是否报错,它都会在结束之前执行finally里面的语句,除非在其它地方使用System.exit()关闭了jvm,所以使用try-catch-finally方式是肯定会释放资源执行close的。即使每次读取三个字节,依旧无法避免乱码的可能,因为若读取的字符串排列为前面俩个英文接一个中文,就会读取到前面俩个英文的(英文数字在utf-8中占一个字节)字节和中文的其中一个字节。自带8K(8192)的字符缓冲池,可以提高字符输入流读取字符数据的性能。

m0_71386740的博客 2689

Java IO 的分类、使用场景、缓冲流、使用例子、文件拷贝

文章目录1、什么是IO1、流的特点:2、IO流的分类1、按方向分2、按处理数据类型分3、按功能分4、按有无缓冲分2、Java IO 流对象详解1、InputStream ——字节流输入流FileInputStreamBufferedInputStream2、OutputStream——字节输出流3、Reader——字符输入流4、Writer——字符输出流3、使用方法1、FileOutputStream写文件、FileInputStream读文件2、FileWriter写文件、FileReader读文件注意点

HaC 的博客 964

【愚公系列】2023年10月 Java教学课程 061-IO流之字符缓冲流

Java中IO流(Input/Output stream)用于处理输入和输出数据的机制,它包括输入流和输出流两个部分。输入流用于从外部读取数据,输出流用于向外部写入数据。Java中的IO流可以让我们从文件、网络、控制台等地方读取数据和输出数据。IO流主要分为字节流和字符流两类,字节流适用于处理二进制数据,而字符流适用于处理文本数据。Java中的IO流分层结构非常清晰,所有的输入流和输出流都是从抽象基类InputStream和OutputStream派生出来的。

愚公智库 5万+

【Java】IO流 有这一篇就够

包含所有IO流,其中包括字符集详解,字符流底层缓冲区详解,idea自动设置UID,以及两个常用工具包commons-io和大名鼎鼎的糊涂包Hutool介绍

Answer的博客 2226

Java IO流的分类及其使用场景有哪些?

Java IO流是Java中处理输入输出操作的核心机制,它为程序与外部数据源之间的数据传输提供了统一的抽象方式。本文将详细探讨Java IO流的分类、使用场景以及具体实现,并通过示例代码展示其应用。

wang15510689957的博客 1022

Java——IO流

Java中一些常见IO流及用法

謬熙的博客 1420

Java的IO流 - 字节流和字符流

在Java中,IO流(Input/Output Stream) 是进行数据输入与输出处理的基础机制,广泛应用于文件读写、网络通信、序列化等场景。IO流体系庞大,但本质可分为两大类:字节流和字符流。本文将围绕这两个核心概念,系统讲解其原理、使用方法和适用场景,帮助读者深入理解Java的IO流机制。

weixin_73144915的博客 1550
上一篇: java学习路线
下一篇: SSH ,window 如何连接git仓库并 克隆拉取推送
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空下的DeppBing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值