Java中的IO流

Java中的IO流详解 Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。​ |-----FileChannel:处理本地文件。 阅读详情

基本概念

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出

基本分类

  • 字节流和字符流

    字节流 - 读写的基本单位 是按 字节 进行,各种类型的文件都可以读写。

    字符流 - 读写的基本单位 是按 字符(双字节) 进行,只能读写文本文件。

  • 输入流和输出流

    站在程序的角度出发的,读 就是 输入,写 就是 输出。

  • 节点流和包装流

框架结构

在这里插入图片描述

字节流相关类

FileOutputStream类

  • 基本概念

    java.io.FileOutputStream类主要用于将图像数据之类的原始字节流写入输出流中。

  • 构造方法

    FileOutputStream(String name)	//根据参数指定的文件名来构造对象
    FileOutputStream(String name, boolean append)	//表示以追加的方式根据参数指定的文件名来构造对象。
    
  • 常用的方法

    void write(int b) - 将指定字节写入此文件输出流

    void write(byte[] b, int off, int len) - 将指定字节数组中从偏移量 off 开始的 len 个字节写入此文件输出流

    void write(byte[] b) - 将 b.length 个字节从指定字节数组写入此文件输出流中

    void close() - 用于关闭文件输出流并释放有关的资源

FileInputStream类

  • 基本概念

    java.io.FileInputStream类主要用于从输入流中读取图像数据之类的原始字节流。

  • 构造方法

    FileInputStream(String name)	//根据参数指定的文件路径名来构造对象
    
  • 常用的方法

    int read() - 读取一个byte 无符号填充到int低八位,-1是EOF

    int read(byte[] b) - 从此输入流中将最多 b.length 个字节的数据读入一个字节数组中,返回读取的字节的个数

    int read(byte[] b, int off, int len) - 从此输入流中将最多 len 个字节的数据读入一个字节数组中

    void close() - 用于关闭文件输出流并释放有关的资源

字符流相关类

BufferedWriter类

  • 基本概念

    java.io.BufferedWriter类主要用于向输出流中写入单个字符、字符数组以及字符串

    由于PrintStream类作用和BufferedWriter类一样且使用更方便,故在此对BufferedWriter类不多加介绍,关于字符输出流直接看下面的PrintStream类即可

PrintStream类

  • 基本概念

    java.io.PrintStream类主要用于方便地打印各种数据内容并且自动刷新。

  • 构造方法

    PrintStream(OutputStream out)	//根据参数指定的引用来构造对象,其中OutputStream类是个抽象类,实参需要传递子类的对象
    
  • 常用的方法

    void print(String s) - 用于将参数指定的字符串内容打印出来

    void println(String x) - 用于打印字符串后并终止该行

    void close() - 用于关闭文件输出流并释放有关的资源

BufferedReader类

  • 基本概念

    java.io.BufferedReader类主要用于从输入流中读取单个字符、字符数组以及一行字符串内容。

  • 构造方法

    BufferedReader(Reader in)	//根据参数指定的引用来构造对象,其中Reader类是个抽象类,实参需要传递子类的对象
    
  • 常用的方法

    String readLine() - 用于读取一行字符串并返回

    void close() - 用于关闭文件输出流并释放有关的资源

对象流

ObjectOutputStream类

  • 基本概念

    java.io.ObjectOutputStream类主要用于将Java语言中的对象整体写入输出流中。
    只能将支持 java.io.Serializable 接口的对象写入流中。
    类通过实现 java.io.Serializable 接口以启用其序列化功能。
    所谓序列化就是指将一个对象相关的所有信息有效组织成字节序列的转化过程。

  • 构造方法

    ObjectOutputStream(OutputStream out)	//其中OutputStream类是个抽象类,实参需要传递子类对象
    
  • 常用的方法

    void writeObject(Object obj) - 用于将参数指定的对象整体写入到输出流中

    void close() - 用于关闭文件输出流并释放有关的资源

ObjectInputStream类

  • 基本概念

    java.io.ObjectInputStream类主要用于从输入流中一次性将一个对象的内容读取出来
    实现了从字节序列到对象的转化过程,叫做反序列化。

  • 构造方法

    ObjectInputStream(InputStream in)	//其中InputStream类是个抽象类,实参需要传递子类的对象
    
  • 常用的方法

    Object readObject() - 主要用于从输入流中读取一个对象并返回

    无法通过返回值来判断是否读取到文件的末尾

    void close() - 用于关闭文件输出流并释放有关的资源

经验分享:
当需要写入多个对象到文件中时,建议先将多个对象放入一个集合对象中,然后将集合对象看做一个整体只需要调用一次writeObject方法就可以写入所有内容,此时只需要调用一次readObject方法就可以将所有内容读取出来,这样就避免了通过返回值来判断是否读取到文件的末尾。

MAVLink协议详解 MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht 阅读详情

相关推荐

001、Zephyr RTOS简介与历史背景

本文介绍了Zephyr RTOS的特点及其在嵌入式开发中的应用。作者通过亲身经历比较了Zephyr与传统RTOS的差异,重点分析了Zephyr的设备树、统一驱动模型、基于CMake的构建系统、POSIX兼容层等核心特性。文章详细阐述了Zephyr在内核设计上的优势,如中断处理模型、内存管理等,并提供了社区生态和使用建议。作者建议开发者从简单项目入手逐步掌握Zephyr,同时指出了常见的使用问题和适用场景,认为Zephyr特别适合复杂软件架构的物联网和工业控制项目。

m0_50546716的博客 153

Java学习之IO流

IO流介绍IO:输入/输出(Input/Output)流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载IO流的分类按照数据的流向输入流:读数据输出流:写数据按照数据类型来分字节流字节输入流字节输出流字符流字符输入流字符输出流IO流的使用场景如果操作的是纯文本文件,优先使用字符流如果操作的是图片、视频、音频等二进制文件。优先使用字节流。

qq_53723728的博客 1927

go语言实现服务器server端与客户client端即时通信(附完整源码)

go语言实现服务器server端与客户client端即时通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 626

Java:IO流详解

Java:IO流详解

游手好闲 1万+

Flink CDC 中 StartupOptions 模式详解

Flink CDC 的 StartupOptions 模式用于指定作业启动时从源数据读取数据的起始位置,不同的模式适用于不同的业务场景,可满足多样化的数据处理需求,主要有 Initial 模式、Earliest 模式、Latest 模式、SpecificOffset 模式和 Timestamp 模式。

RodJohnsonDoctor的专栏 849

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略 目录 Knowledge Engineering知识工程的简介 0.1、What 0.2、How 0.3、Why 1、知识工程过程的5个活动 2、知识图谱的应用 Knowledge Engineering知识工程的发展 1、前知识工程时期——1950-1970时期:图...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5335

Java io流 详解

"IO流"(Input/Output stream)指的是Java中用于处理输入输出(I/O)数据的机制。在Java中,所有的输入和输出都被抽象为“流”对象,并通过输入流读取数据、输出流写入数据。Java的I/O包提供了丰富的类和方法来支持不同类型的流,输入流和输出流之间可以自由地进行转换。它们分别主要包括字节流和字符流两种类型。其中,字节流是操作二进制数据的流,可以处理任何类型的数据,常见的例如InputStream和OutputStream;

m0_68987535的博客 5368

Vibe Coding 工具实战案例全解:Cursor、Claude Code、Codex 真实项目 30 分钟到 4 小时快速构建指南(2026 年最新)

2026年VibeCoding工具实战案例精选:1)使用Cursor在30分钟内构建现代TodoList应用(Next.js+TS+Tailwind);2)通过ClaudeCode纯终端2小时开发3D飞行射击游戏(Three.js+R3F);3)利用OpenAICodex多Agent并行4小时完成SaaS全栈开发(Next.js+Supabase+Stripe)。案例均来自真实项目,覆盖从入门到生产级开发,重点展示:自然语言Prompt技巧、迭代反馈方法、工具特性对比(Cursor可视化最佳/Claude推

hy行者勇哥的博客 3167

java中的io流

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出 。

m0_66689823的博客 1万+

ESM2蛋白预训练模型 蛋白质、氨基酸向量表示

参考: https://github.com/facebookresearch/esm https://huggingface.co/facebook/esm2_t33_650M_UR50D https://esmatlas.com/resources?action=fold tokenizer_对输入蛋白会头尾添加cls、eos特殊字符,占两个字符长度 参考:https://github.com/facebookresearch/esm 直接clone下来代码

weixin_42357472的博客 1万+

智能座舱SoC平台横评:SA8155P、SA8255P、SA8295P、MT8678、MT8628 谁是下代车机首选?

高通SA8295P以PC级架构、强悍AI算力,代表安卓阵营迈向“本地大模型+空间计算”阶段;联发科MT8678则凭借低功耗 + 高带宽,成为副驾多媒体/副屏智能化的性价比之王。在座舱设计中,SoC平台决定了你能给用户什么样的交互方式,选型时切忌只看跑分,而要回归“体验-热设计-平台生态”的三角平衡。

weixin_43199439的博客 3353

Java IO流详解

原文 Java IO流详解 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 IO又分为流IO(java.io)和块IO(java.nio) Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的

ss810540895的博客 1万+

uniapp(全端兼容) - 超详细接入百度统计功能,给uniapp全平台各端项目引入添加百度统计的插件统计流量详细的步骤教程(提供最新的百度统计源代码,详细的示例代码复制粘贴即可快速搞定!)

uniapp h5 app 使用加入接入百度统计,uniapp百度统计,uniapp详细引入百度统计的教程,uniapp接入百度统计,uniapp如何实现加入百度的统计代码,uniapp怎么植入百度统计详细教程,uniapp如何对接百度统计,uniapp百度统计不生效怎么办,uniapp使用百度统计不生效常见问题,uniapp引入百度统计后没有生效,uniapp h5网页接入百度统计代码后没有统计无效,uniapp最新接入使用百度统计功能,uniapp增加百度统计代码,uniapp app如何接入百度统计,

✅ 精选推荐文章 1万+

java中的IO流

如果new的File对象所表示的文件或目录并不存在,那么并不会应位new了一个File对象,操作系统就在对应的路径下创建所对应的文件和目录,它仅仅是在JVM的堆中new了一个File对象而已。java为了避免这种类型安全性问题的发生,使序列化接口类在每次编译时,自动生成一个序列化版本ID,用以区别不同的版本,当序列化和反序列化的版本不一致时,就会失败,抛出异常。然而,有些修改并不影响对象的反序列化,如类中加入了新的实例变量,而序列化的数据中并没有新实例变量的值,那么它在反序列化的过程中可以使默认值。

冲出仁川,走出马德里,故事还会再继续 2525

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Java IO流】IO流详解

IO,即InputOutput,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括磁盘文件、管道、网络连接Java中是通过流处理IO的,那么什么是流?流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道当Java程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是磁盘文件、内存、网络连接等等。类似地,当Java程序需要写入数据的时候,就会开启一个通向目的地的流。

m0_55908255的博客 1692

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java IO流之IO流基础

IO流介绍 IO基础之File类 IO流之字符流 IO流之字节流 IO流之Scanner类

Mr.mooye 2847

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java IO流知识点总结

I(Input)O(Output) 通过IO可以处理程序与外部环境之间的数据传输。

weixin_43836337的博客 1867

Java——IO流

存储和读取数据的解决方案IO流和File是息息相关的。

pangyaqi的博客 1707

java IO流学习总结

学习了几天的java IO流,下面我来谈谈对java 输入输出流IO的个人见解吧! 转载自:https://blog.youkuaiyun.com/zhaoyanjun6/article/details/54292148/ java流类结构图 一.流的概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。它的特性是进行数据传输; 例如从水源地长江把水导入自来水厂,然后又从自...

coder150806的博客 5万+

java基础——IO流

是字节输入流,用于从文件中读取字节数据。int data;= -1) {

2403_87486006的博客 795

java io流不关闭有什么后果_Java IO流

一、基本概念 IO是Java对数据的操作是通过流的方式,数据传输是需要通道的,而IO流就是数据传输的通道。IO流可以形象的比喻为运送货物的传输带。IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。总结一下,Java IO输入机制就是为了允许程序读取外部数据(包括来自于磁盘、光盘等存储设备的数据)和用户输入的数据。 Java的IO流通过java...

weixin_39563827的博客 2325
上一篇: Java中的日期相关类
下一篇: Java中的多线程
后浪Rocky
博客等级 码龄7年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值