java常用IO流功能——转换流,打印流,数据流,序列化流概述

news/2024/4/28 6:22:11/文章来源:https://blog.csdn.net/l822099133/article/details/137073849

前言:

整理下IO流的相关知识点笔记,打好基础,daydayup!!!

之前整理了下 字节流,字符流和缓冲流,有需要的可以看这里

java常用应用程序编程接口(API)——IO流概述及字节流的使用

java常用IO流功能——字符流和缓冲流概述

转换流

计算机发展以来有很多编码标准,UTF-8,GBK,ASCII,UTF-16等,目前默认使用UTF-8进行编码和解码。但如果在一些情况下,编码和解码使用的标准不一致,则会出现乱码的情况。如图:

这个时候就需要转换流来把文件进行转码。

InputStreamReader(字符输入转化流)

作用:解决不同编码时,字符流读取文本内容乱码的问题

原理:先获取文件的原始字节流,再将其按真实的字符编码转成字符输入流,这样字符输入流中的字符就可以正常显示了。

使用方法

public InputStreamReader(InputStream is ,String charset)把原始的字节输入流,按照指定字符集编码转成字符输入流

示例如下:(运用GBK进行解码)

 OutputStreamReader(字符输出转化流)

作用:可以控制写出去的字符使用什么字符集编码

原理:获取字节输出流,再按照指定的字符集编码将其转换成字符输出流,以后写出去的字符就可以用该字符集了

使用方法

public OutputStreamWriter(OutputStream os,String charset)可以把原始的字节输出流,按照指定编码转换成字符输出流

 示例如下:(使用GBK编码)

打印流

打印流是用于输入的工具

PrintStream/PrintWriter(打印流)

作用:打印流可以实现更方便,更高效的打印的数据出去,能实现输入什么就可以打印出什么

使用方法

public void println(Xxx xx)打印任意类型的数据

示例如下:

数据流 

数据流可以写出或写入不同的类型

DataOutputStream(数据输出流)

作用:把数据和其类型一并写出来

使用方法

方法说明
public final void writeByte(int v) throw IOException将byte类型的数据写入基础的字节输出流
public final void writeInt(int v) throws IOException将int类型的数据写入基础的字节输出流
public final void writeDouble(Double v) throw IOException将double类型的数据写入基础的字节输出流
public final void writeUTF(String str) throw IOException将字符串数据以UTF-8编码成字节写入基础的字节输出流
public void write (int/byte[ ]/byte[ ]一部分 )支持写字节数据出去

 示例如下

DataInputStream(数据输入流)

作用:用于读取数据输出流写出去的数据

使用方法

方法说明
public final byte readByte( ) throws IOException读取字节数据返回
public final int readInt( ) throws IOException读取int类型的数据返回
public final double readDouble( ) throws IOException读取double类型的数据返回
public final String  readUTF( ) throws IOException读取字符串数据(UTF-8)返回
public int readInt() / read(byte[ ] )支持读字节数据进来

示例如下

序列化流 

序列化流分为对象序列化和对象反序列化。对象序列化是把java对象写入到文件中去;对象反序列化是把文件里的java对象读出来。

 ObjectOutputStream(对象字节输出流)

作用:把java文件序列化,把java对象存入到文件中

使用方法

public final void writeObject(Object o) throws IOException把对象写出去

 示例如下:(创建User实体类,通过writeObjec方法进行写出保存)

 ObjectInputStream(对象字节输入流)

作用:把java对象进行反序列化,把存储在文件中的java对象读入到内存中

使用方法

public final Object readObject()把存储在文件中的java对象读出

 示例如下:(把保存的java对象取出)

整理结束,撒花!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1026963.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring:面试八股

文章目录 参考Spring模块CoreContainerAOP 参考 JavaGuide Spring模块 CoreContainer Spring框架的核心模块,主要提供IoC依赖注入功能的支持。内含四个子模块: Core:基本的核心工具类。Beans:提供对bean的创建、配置、管理功能…

❤ leetCode简易题1-两数之和、简易2--回文数判断、简易14-最长公共前缀

❤ leetCode简易题1-两数之和、简易题14- 最长公共前缀 1、简易1-两数之和 ① 题目要求 数字A B target,以target为求和结果,找出数组中符合的A、B数字下标。 第一次做的时候完全脑子一片蒙,随后认真看了看题目发现是发现找符合target和…

论文导读 | 漫谈编辑问题

摘要 本文着眼于深度学习模型在各个领域中的编辑问题,从通用的分类器编辑算法切入,展开介绍针对扩散模型的图像编辑问题和针对大语言模型的知识编辑问题,希望能为读者关于“修改模型的行为”这一话题提供一些启发。 引言 当我们训练好一个…

【问题分析】InputDispatcher无焦点窗口ANR问题【Android 14】

1 问题描述 Monkey跑出的无焦点窗口的ANR问题。 特点: 1)、上层WMS有焦点窗口,为Launcher。 2)、native层InputDispacher无焦点窗口,上层为”recents_animation_input_consumer“请求了焦点,但是”rece…

高防DNS和高防IP一样吗?

高防DNS和高防IP在功能和目标上有所不同,因此它们并不完全相同。 高防DNS是一种针对DNS服务的防护措施,旨在保护域名解析免受DDoS攻击等网络威胁的影响。它利用高防服务器和高防机房的资源,对无效流量进行清洗,保障DNS服务器的安…

零基础学习挖掘PHP网站漏洞

教程介绍 本套课程,分为三个阶段:第一阶段:基础篇 学习PHP开发的基础知识,对PHP常见的漏洞进行分析,第二阶段:进阶篇 实战PHP漏洞靶场,了解市面上的PHP主流网站开发技术,并对市面上…

图解MySQL目录

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 一 .图解MySQL介绍 重点突击 MySQL 索引、事务、锁、日志等面试常问知识。 二 . 基础篇 执行一条 select 语句,期间发生了什么? : 执行一条 select 语句,期间发生了什…

SQL的事务及其ACID属性

目录 SQL中的事务简介事务和ACID属性SQL事务中的关键命令示例SQL事务的隔离层级1. 未提交读取2. 提交后读取3. 可重复读取4. 可序列化脏读、不可重复读或虚读脏读取不可重复读取(未提交读取)虚读取推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速…

使用express Vue+Node搭建的网上购物商城

前言 项目采用的技术栈: VueNodeMySQL 前端:用Vue-cli搭建,使用Vue全家桶element-ui 后端:express框架 数据库:MySQL 一、功能 普通用户 注册、登录(图形验证码)定位 (腾讯地图定位功能&#…

查找中常见的树数据结构

查找中常见的树数据结构 一、排序二叉树二、平衡二叉树三、红黑树(自平衡二叉树)四、B树五、B树 在动态查找中常见的树相关的数据结构包括: 排序二叉树(Binary Search Trees)平衡二叉树(AVL Trees&#xff…

ssh 公私钥

一、生成ssh公私钥 生成自定义名称的SSH公钥和私钥对,需要使用ssh-keygen命令,这是大多数Linux和Unix系统自带的标准工具。下面,简单展示如何使用ssh-keygen命令来生成具有自定义名称的SSH密钥对。 步骤 1: 打开终端 首先,打开我…

鸿蒙HarmonyOS应用开发之在NDK工程中使用预构建库

在NDK工程中,可以通过CMake语法规则引入并使用预构建库。在引用预构建库时,模块libs目录中的预构建库,以及在CMakeList.txt编译脚本中声明的预构建库都会被打包。 例如在项目中需要使用预构建库libavcodec_ffmpeg.so,其开发态存放…

【数据库管理操作】Mysql 创建学生数据库及对数据表进行修改

MySQL 创建学生成绩数据库 1.创建数据库 create database studentscore;创建完成之后,如果需要使用该数据,使用use命令 use studentscore;创建表前查看当前数据库中包含的表 show tables; 2.创建bclass表 create table bclass( class_id char(8) …

蓝桥杯刷题day09——霓虹【算法赛】

一、问题描述 晚上,小蓝正无聊的走在大路上,小蓝所在的街区是—个带有赛博朋克风格的街区。 他抬头—看,看到了很多霓虹灯牌。在其中的某一个店铺前,挂着一排的数字灯牌,每一个数字的显示都依靠7段LED管,亮着的灯管组成数字,具体来说如下图所示: 小蓝刚学过数字电路,他…

数据库系统概论-第3章 关系数据库标准语言SQL

3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结

Java_19 罗马数字转整数

罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1…

vue3+threejs新手从零开发卡牌游戏(十三):上场手牌添加攻击力文字

在utils/common.ts下新建渲染场上手牌文字方法: // 渲染场上手牌文字 const renderSiteCardText (mesh: any, font: any) > {return new Promise((resolve, reject) > {let pos mesh.positionconst geometry new TextGeometry( ATK ${mesh.userData._ATK}…

蓝桥杯2023省赛:矩阵总面积|模拟、数学(几何)

题目链接: 0矩形总面积 - 蓝桥云课 (lanqiao.cn) 说明: 参考文章:矩形总面积计算器:计算两个矩形的总面积,包括重叠区域_矩形r1的左下角坐标为x1, yl 、宽度为w1、高度为h1, 矩形r2的左下角坐标为x2,y2、宽-CSDN博客…

面试算法-93-交错字符串

题目 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 &#xff1a; s s1 s2 … sn t t1 t2 … tm |n - m| < 1 交错…

如何用联合(共用体)union验证系统大小端

一&#xff1a;思路 由联合体的特点&#xff0c;可知上图&#xff0c;char c 和 int i 共用四个字节&#xff0c;假设是小端&#xff0c;则由左到右是低地址到高地址&#xff0c;四个字节的内容如图所示01 00 00 00 代码展示&#xff1a; 如果第一个字节是1&#xff0c;则证明…