当前位置: 首页 > news >正文

Java基础:IO流有哪些,各有什么特点和功能

具体操作分成面向字节(Byte)和面向字符(Character)两种方式。

如下图所示:

IO流的三种分类方式

IO流的层次结构

IO流的常用基类有:

字节流的抽象基类:InputStream和OutputStream;

字符流的抽象基类:Reader和Writer。

注意:由这四个类派生出来的子类名称均以其父类名作为子类名的后缀,以前缀为其功能。如,InputStream的子类——FileInputStream,Reader的子类——FileReader。


1) 字节流:

InputStream 与 OutputStream;

InputStream 是所有字节输入流的父类,其定义了基础的读取方法;

OutputStream 是所有字节输出流的父类,其定义了基础的写出方法包含:

文件流:

FileOutputStream 是文件的字节输出流,我们使用该流可以以字节为单位将数据写入文件(默认覆盖模式,第二个参数设施为 true 可改变为追加模式)。

 FileInputStream 是文件的字节输入流,我们使用该流可以以字节为单位读取文件内容。

缓冲流:

BufferedOutputStream 缓冲字节输出流,需用flush方法将缓存的字节写出或在关闭流时一次性写出。

BufferedInputStream 是缓冲字节输入流。

对象流:

ObjectOutputStream 是用来对对象进行序列化的输出流。

ObjectInputStream 是用来对对象进行反序列化的输入流。


2) 字符流:Reader 和 Writer

Reader 是所有字符输入流的父类。

Writer 是所有字符输出流的父类。

字符流是以字符 (char) 为单位读写数据。一次处理一个 unicode。字符流都是高级流,其底层是依靠字节流进行读写数据。

包含:转换流:

InputStreamReader:字符输入流,使用该流可以设置字符集

OutputStreamWriter:字符输出流,使用该流可以设置字符集字符缓冲流

PrintWriter 具有自动行刷新的缓冲该字符输出流,需第二个参数设置为 true。

BufferedReader 是缓冲字符输入流;

注:PrintWriter 写出字符串时通常不用 Writer 提供的 write( ) 相关方法,而是用重载的 print 和println 方法。

BufferedReader 读取字符串时可用 readLine()连续读取一行字符串,直到读取到换行符为止,返回的字符串中不包含该换行符,未读到返回 null。


3)序列化流:ObjectInputStream和ObjectOutputStream

对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过程,

对象的输入流将指定序列化好的文件读出来的过程,就是对象反序列化的过程。

既然对象的输出流将对象写入到文件中称之为对象的序列化,那么可想而知对象所对应的class必须要实现Serializable接口。(查看源码可得知:Serializable接口没有任何的方法,只是作为一个标识接口存在)。

相关文章:

Java基础:IO流有哪些,各有什么特点和功能

具体操作分成面向字节(Byte)和面向字符(Character)两种方式。 如下图所示: IO流的三种分类方式 IO流的层次结构 IO流的常用基类有: 字节流的抽象基类:InputStream和OutputStream; 字符流的抽象基类:Reader和Writer…...

MySQL、PostgreSQL、Oracle、SQL Server数据库触发器实现同步数据

数据库触发器是一种在数据库中设置的程序,当满足某些特定条件时,它会自动执行。触发器通常与数据表的操作(例如插入、更新和删除)相关联,它们可以帮助保证数据的完整性和一致性。在本篇博客中,我将介绍各种…...

因为我没交周报,leader要罚款200元,怎么给他挖坑?能以敲诈勒索罪告他吗?...

没交周报就罚款,这种事你们遇到过吗? 一位网友说:leader在群里通知不交周报就罚款,这周罚到他头上,要罚款200元,这种情况怎么办?能定他一个敲诈勒索罪或者抢劫罪吗?最差也要在离职后…...

java跨域问题

什么是跨域? 跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com页面去请求www.google.com的资源。但是一般情况下不能这么做,他是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。 跨域的严格定义是&…...

故障重现, JAVA进程内存不够时突然挂掉模拟

背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:26…...

数画-AI绘画-免费的人工智能AI绘画网站

文章目录 AIGC什么是AI作画?Prompt数画AIGC的未来发展结语 AIGC AIGC(AI Generated Content)是指利用人工智能生成内容。是利用人工智能来生成你所需要的内容,GC的意思是创作内容。与之相对应的概念中,比较熟知的还有P…...

ElasticSearch安装、启动、操作及概念简介

ElasticSearch快速入门 文件链接:https://pan.baidu.com/s/15kJtcHY-RAY3wzpJZIn4-w?pwd0k5a 提取码:0k5a 有些软件对于安装路径有一定的要求,例如:路径中不能有空格,不能有中文,不能有特殊符号&#xf…...

Linux用户管理

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 前言 努力是最好的捷径! 目录 1.Linux基于用户身份对…...

Docker 的安装和镜像容器的基本操作

文章目录 一、Docker 概述1、Docker的概念2、容器的优点3、容器与虚拟机的区别4、容器在内核中支持2种重要技术5、Docker核心概念 二、Docker的安装1、docker的安装步骤2、实例操作:安装docker 三、Docker 镜像操作1、搜索镜像2、获取镜像3、镜像加速下载4、查看镜像…...

被盗的ChatGPT账户在暗网热销,ChatGPT的隐私和安全问题依旧值得关注

在过去的一个月,Check Point研究人员在暗网上观察到了与ChatGPT相关的各种讨论和交易。暗网上最新的活动包括泄露和免费发布ChatGPT账户的凭据,以及交易被盗的ChatGPT账户。 根据Check Point进行的一项研究,从今年3月以来,被盗的…...

OpenCV2 计算机视觉应用编程秘籍:6~10

原文:OpenCV2 Computer Vision Application Programming Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线…...

如何对农田温室气体进行有效模拟?

农业是甲烷(CH4)、氧化亚氮(N2O)和二氧化碳(CO2)等温室气体的主要排放源,占全产业排放的13.5%。农田温室气体又以施肥产生的N2O和稻田生产产生的CH4为主,如何对农田温室气体进行有效…...

java数据结构刷题练习

class Solution {public boolean containsDuplicate(int[] nums) {Arrays.sort(nums);for(int i1;i<nums.length;i){if(nums[i-1]nums[i])return true;}return false; } }作者&#xff1a;affectionate-albattani7tn 链接&#xff1a;https://leetcode.cn/problems/contains…...

《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议

密码协议是指两个或者两个以上参与者使用密码算法时&#xff0c;为了达到加密保护或安全认证目的而约定的交互规则。 密钥交换协议 公钥密码出现之前&#xff0c;密钥交换很不方便&#xff0c;公钥密码可以在不安全信道上进行交换&#xff0c;交换的密码协议是为了协商会话密钥…...

Qt Quick - TabBar

Qt Quick - TabBar使用总结 一、概述二、调整选项卡三、Flickable标签三、定制化 一、概述 TabBar其实就是选项卡&#xff0c;TabBar是由TabButton控件填充&#xff0c;TabBar可以与任何提供currentIndex属性的布局或容器控件一起使用&#xff0c;如StackLayout或SwipeView。T…...

ElasticSearch集群搭建

一、ElasticSearch 集群 1.1 搭建集群 Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群&#xff0c;三个Master节点最多只能故障一台Master节点&#xff0c;如果故障两个Master节点&#xff0c;Elasticsearch将无法组成集群.会报错&…...

【pan-sharpening 攻击:目标检测】

Adversarial pan-sharpening attacks for object detection in remote sensing &#xff08;对抗性泛锐化攻击在遥感目标检测中的应用&#xff09; 全色锐化是遥感系统中最常用的技术之一&#xff0c;其目的是将纹理丰富的PAN图像和多光谱MS图像融合&#xff0c;以获得纹理丰…...

nginx反向代理_负载均衡的配置

说明 两台虚拟机&#xff1a; 88节点是自己的虚拟机 66节点是小组成员的虚拟机&#xff0c;我们暂且叫同学机 tomcat端口&#xff0c;分别为8081和8082 总结就是&#xff1a; 自己虚拟机上面安装nginx和tomcat8082 同学机上安装tomcat8081 一、开始安装nginx&#xff08;只安装…...

程序员随时担心被抛弃......大厂外包值不值得去?

外包”这个词经常被人提及&#xff0c;而且也经常被我们所“鄙夷”&#xff0c;很多人都在四处问&#xff1a;“软件外包公司到底能不能去”&#xff1f; 外包公司到底能不能学到真正的技术&#xff1f; 外包大厂能不能去&#xff1f; 今天就给大家详细分享下外包的利与弊 做…...

C++解释器模式实战:从设计到应用的全面指南

目录标题 第一章&#xff1a;解释器模式简介&#xff08;Introduction to the Interpreter Pattern&#xff09;1.1 模式定义&#xff08;Pattern Definition&#xff09;1.2 解释器模式的用途&#xff08;Uses of the Interpreter Pattern&#xff09; 1.3 解释器模式的优缺点…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...