IO(Reader/Writer)

1.Reader

a.简介

        i.是Java的IO库提供的另一种输入流。和InputStream的区别是:InputStream是字节流,以byte为单位,Reader是字符流,以char为单位。

        ii.java.io.Reader是所有字符输入流的超类。

b.FileReader

        i.FileReader默认的编码与系统相关,创建时需要指定编码,Windows系统的默认编码可能是GBK,打开一个UTF-8编码的文本文件出现乱码。
        ii.int read(char[] c)一次性读取若干字符并填充到char[]数组,返回实际读入的字符个数,最大不超过char[]数组的长度,返回-1表示流结束。

c.CharArrayReader

        i.可以在内存中模拟一个Reader,实际作用是把char[]数组变成一个Reader。

d.StringReader

        i.可以直接把String作为数据源,和CharArrayReader几乎一样。

e.InputStreamReader

        i.除了特殊的CharArrayReader和StringReader,普通的Reader实际上是基于InputStream构造的,因为Reader需要从InputStream中读取字节流(byte),然后根据编码设置,再转换成char就可以实现字符流。
        ii.Reader本质上是一个基于InputStream的byte到char的转换器,InputStreamReader转换器可以把任何InputStream转换成Reader。

2.Writer

a.简介

        i.带编码转换器的OutputStream,把char转换成byte并输出。

        ii.java.io.Writer是所有字符输出流的超类。

b.FileWriter

        i.向文件中写入字符流的Writer。

c.CharArrayWriter

        i.在内存中创建一个Writer,实际上是构造一个缓冲区,可以写入char,最后得到写入的char[]。

d.StringWriter

        i.也是一个基于内存的Writer,和CharArrayWriter类似。实际上,内部维护了一个StringBuffer,并对外提供了Writer接口。

e.OutputStreamWriter

        i.除了特殊的CharArrayWriter和StringWriter,普通的Writer实际上是基于OutputStream构造的,接收char,然后在内部自动转换成byte,并写入OutputStream。
        ii.Writer本质上是一个基于OutputStream的char到byte的转换器,OutputStreamWriter转换器可以把任何OutputStream转换成Writer。

3.PrintStream和PrintWriter

a.PrintStream

        i.是一种FilterOutputStream,提供写入各种数据类型的方法。
        ii.System.out:系统默认提供的标准输出流。System.err:系统默认提供的标准错误输出流。
        iii.可以打印各种数据类型,不会抛出IOException,编写代码时,不需要捕捉IOException。

b.PrintWriter

        i.PrintStream最终输出的总是byte数据,而PrintWrite则是扩展了Writer接口,它的print()/println()最终输出的是char数据。

4.Files

        a.读写小文件的工具类,读取大文件仍然要使用文件流。
        b.Files是java.nio包里的,封装了很多读写方法。

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

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

相关文章

QT基础 制作简单登录界面

作业: 1、创建一个新项目,将默认提供的程序都注释上意义 01zy.pro代码 QT core gui # QT表示要引入的类库 core:核心库例如IO操作在该库中 gui:图形化界面库 # 如果要使用其他类库中的相关函数,则需要加对…

PHP爬虫淘宝商品SKU详细信息获取指南

在电子商务领域,获取商品的SKU(Stock Keeping Unit,库存单位)详细信息对于商家进行库存管理、订单处理和客户服务至关重要。淘宝作为中国最大的电商平台之一,提供了丰富的API接口,使得开发者能够通过PHP爬虫…

影院管理革新:小徐的Spring Boot应用

第二章开发技术介绍 2.1相关技术 小徐影城管理系统是在Java MySQL开发环境的基础上开发的。Java是一种服务器端脚本语言,易于学习,实用且面向用户。全球超过35%的Java驱动的互联网站点使用Java。MySQL是一个数据库管理系统,因为它…

Java: 数据类型与变量和运算符

目录 一 .字面常量 二.数据类型 三.变量 1.语法格式 2.整型变量 (1).整型变量 (2). 长整型变量 (3).短整型变量 (4).字节型变量 3.浮点型变量 (1).双精度浮点型 (2).单精度浮点型 4.字符型变量 5.布尔型变量 四.类型转换 1.自动类型转换(隐式) 2.强制类型转换(…

四种主要的IO模型

多路复用 **阻塞式IO**流程:特点:**非阻塞式IO**流程:特点:优点:**缺点:****IO多路复用**流程:优点缺点:异步IO流程如下:特点:缺点:阻塞式IO 默认情况下linux进程对所有socket连接进行的IO操作都是同步阻塞IO,在阻塞IO模型中,从进程发起IO系统调用开始,一直到系统…

如何通过Dockfile更改docker中ubuntu的apt源

首先明确我们有一个宿主机和一个docker环境,接下来的步骤是基于他们两个完成的 1.在宿主机上创建Dockerfile 随便将后面创建的Dockerfile放在一个位置,我这里选择的是 /Desktop 使用vim前默认你已经安装好了vim 2.在输入命令“vim Dockerfile”之后,…

Unity实战案例全解析:RTS游戏的框选和阵型功能(2) 生成选择框

前篇:Unity实战案例全解析:RTS游戏的框选和阵型功能(1) 基础要素-CSDN博客 本案例来源于unity唐老狮,有兴趣的小伙伴可以去泰克在线观看该课程 【唐老狮】Unity实现 即时战略游戏 阵型功能 - 泰课在线 -- 志存高远&…

青动CRM-仓储云V1.1.2

多平台(微信公众号(高级授权)、微信小程序(高级授权)、H5网页(高级授权)、Android-App(高级授权)、iOS-App(高级授权))仓库管理系统,拥有强大的表单设计、多角色员工权限、出入库管理、仓库管理、送货管理、自定义审批流、绩效管理、客户管理、合同管理等功能。提供…

906. 超级回文数

1. 题目 906. 超级回文数 2. 解题思路 题目意思很简单,在给定范围中找到所有满足,它本身是回文,且它的平方也是回文的数字个数。 这题需要注意题目给定的范围,后面很有用: 因为回文范围是有限的,那么我…

开启争对目标检测的100类数据集-信息收集

DataBall 助力快速掌握数据集的信息和使用方式。 目标检测项目数据集样例地址: gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview github: https://github.com/TechLinkX/DataBall-detections-100s 请关注我们的专栏:DataBal…

栏目一:使用echarts绘制简单图形

栏目一:使用echarts绘制简单图形 前言1. 在线编辑图形1.1 折线图1.2 柱状图1.3 扇形图 2. 本地绘制图表2.1 下载echarts.min.js2.2 创建一个简单的图形 前言 Echarts是一款基于JavaScript的可视化图表库。它提供了丰富的图表类型和交互功能,可以用于在网…

【matlab画多纵坐标图像】

一 、什么是多纵坐标图像 多纵坐标图像是一种在同一个坐标系中,使用多个纵坐标轴来表示不同的数据指标的图像。在多纵坐标图中,每个纵坐标轴可以有不同的刻度和单位,用于表示不同的数据范围。这样可以方便地比较不同指标的变化趋势&#xff0…

动态顺序表的增删改查(数据结构)

目录 一、顺序表 二、静态顺序表 三、动态顺序表 3.1、动态顺序表的实现 3.2、动态顺序表的实现 3.3.1、结构体创建 3.3.2、初始化 3.3.3、销毁数据 3.3.4、增容空间 3.3.5、尾插数据 3.3.6、头插数据 3.3.7、删除尾数据 3.3.8、打印数据 3.3.9、删除头数据 3.3…

怎么绕开华为纯净模式安装软件

我是标题 众所周不知,华为鸿蒙系统自带纯净模式,而且 没法关闭 : ) 我反正没找到关闭键 以前或许会有提示,无视风险,“仍要安装”。但我这次遇到的问题是,根本没有这个选项,只有“应用市场”和“取消”&…

鸿蒙OS开发之动画相关示例分享, 关于弹出倒计时动画的实战案例源码分享

基础动画案例 Entry Component struct Index {StatebtnWidth:number 200 // 按钮的宽度StatebtnHeight:number 100 // 按钮的高度build() {Row(){Column(){Button("测试").width(this.btnWidth).height(this.btnHeight)// 按钮: 用来启动动画Button("动画开始…

XWF使用指南

简介 X-Ways Forensics 是由 Stefan Fleischmann 编写的一个轻量化的应急响应及取证工具,是 WinHex 的法证版本,因此界面逻辑和 WinHex 较为相似。在配置好 mplayer 的情况下,程序总体积在 100MiB 左右,运行时内存占用极低&#…

c++ 继承 和 组合

目录 一. 继承 1.1 继承的概念 1.2 继承定义 1.3 继承类模板 1.4. 继承中的作用域 二. 派生类(子类)的默认成员函数 2.1 概念: 2.2 实现⼀个不能被继承的类 2.3 继承与友元 2.4继承与静态成员 三.多继承及其菱形继承问题 3.1继承方…

市场调研利器 网络问卷的优势及面临的挑战

网络问卷作为市场调研工具,高效便捷、成本低廉、数据准确度高且灵活多样。但其低响应率、数据偏差、隐私与安全及技术依赖等挑战也需关注。企业应优化调研方法,应对挑战,以获取全面市场信息。 一、网络问卷的优势 首先,我们来分析…

sheng的学习笔记-AI-时序差分学习

AI目录:sheng的学习笔记-AI目录-CSDN博客 强化学习:sheng的学习笔记-AI-强化学习(Reinforcement Learning, RL)-CSDN博客 蒙特卡罗强化学习: sheng的学习笔记-AI-蒙特卡罗强化学习-CSDN博客 什么是时序差分学习 时序…

毕业设计选题:基于ssm+vue+uniapp的校园订餐小程序

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