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

前言:

整理下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.hqwc.cn/news/573469.html

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

相关文章

JUC:线程安全分析和常见的线程安全类

文章目录 线程安全问题分析常见的线程安全类线程安全类方法组合不可变类型 线程安全问题 分析 局部变量是安全的,成员变量并不安全。 切记,方法是拷贝执行的,方法内部的局部的变量并不共享,所以是安全的,但如果方法…

中国社会科学院大学-新加坡社科大学全球战略领导力博士学位(DBA)教育项目招生简章

项目简介 全球经济正在经历由科技进步和创新、政治和人口剧烈变化所带来的巨大的不确定性和挑战。面对日趋复杂的外部竞争环境,企业的领导者和管理者需要具备卓越的战略思维和全球洞察力、以科学的精神和严谨务实的态度引领企业创新发展。 为此,中国社…

代码随想录 Day60 单调栈

今天我的代码随想录一刷完结了,诸多题目还是云里雾里,先说84题,这道题跟接雨水很相似,只不过这是单调递减栈,剩下的如出一辙,但是有一个细节,就是要在数组的头尾两端加上0,不仅对计算…

Uibot6.0 (RPA财务机器人师资培训第4天 )批量开票机器人案例实战

类似于小北之前发布的一篇博客(不能说很像,只能说是一模一样) Uibot (RPA设计软件)财务会计Web应用自动化(批量开票机器人)-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/136782171?spm1001.2014.3001.…

基于springboot+vue+Mysql的酒店管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

fs.1.10 ON CENTOS7 docker镜像制作

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 centos7 docker上编译安装fs1.10版本的流程记录。 环境 docker engine:Version 24.0.6 centos docker:7 freeswitch:v1.10.7 手动模式 centos准备 docker hub拉取centos镜像。…

【吊打面试官系列】Redis篇 -怎么测试 Redis 的连通性?

大家好,我是锋哥。今天分享关于 【怎么测试 Redis 的连通性?】面试题,希望对大家有帮助; 怎么测试 Redis 的连通性? 使用 ping 命令。 要测试Redis的连通性,可以使用redis-cli命令行工具或编写代码。以下是…

【Java程序设计】【C00392】基于(JavaWeb)Springboot的校园生活服务平台(有论文)

基于(JavaWeb)Springboot的校园生活服务平台(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过…

【滑动窗口】Leetcode 长度最小的子数组

题目解析 209. 长度最小的子数组 算法讲解 算法1&#xff1a;暴力枚举 枚举出所有和大于等于target的数组&#xff0c;然后求出其中长度最小的那一个 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {// 记录结果int ret INT_MAX…

LNMP架构之mysql数据库实战

mysql安装 到官网www.mysql.com下载源码版本 实验室使用5.7.40版本 tar xf mysql-boost-5.7.40.tar.gz #解压 cd mysql-boost-5.7.40/ yum install -y cmake gcc-c bison #安装依赖性 cmake -DCMAKE_INSTALL_PREFIX/usr/local/mysql -DMYSQL_DATADIR/data/mysql -DMYSQL_…

策略路由-IP-Link-路由协议简介

策略路由 策略路由和路由策略的不同 1.策略路由的操作对象是数据包&#xff0c;在路由表已经产生的情况下&#xff0c;不按照路由表进行转发&#xff0c;而是根据需要&#xff0c;依照某种策略改变数据包的转发路径 2.路由策略的操作对象是路由信息。路由策略的主要实现了路…

python学习14:python中的表达式

python中的表达式 1.表达式是什么呢&#xff1f; 表达式就是一个具有明确结果的代码语句&#xff0c;如11、type(‘字符串’)、3*5等 在定义变量的时候&#xff0c;如age108,等号右侧的就是表达式&#xff0c;也就是有具体的结果&#xff0c;将结果赋值给了等号左侧的变量 2.…