Java基础面试题-7day

I/O流基础知识总结 2

字符流

reader 字符输入流
writer 字符输出流

使用字符流的原因:但我们要读取的文件,字符串含有字符时,如果在不知道该字符对应生成的编码类型是什么就会读取到内存显示的是乱码
所有为了解决,出现了直接操作字符的输入输出流来进行数据的处理

使用范围:
当我们要传输的是视频文件,音频文件时,使用字节输入输出流进行操作
当我们传输的文件是字符,使用字符输入输出流进行操作

常用的字符编码所占的字节数:

  1. unicode 任何字符都占两个字节
  2. gbk 英文占一个字节,中文占两个字节
  3. utf-8 英文占一个字节,中文占三个字节

reader-字符输入流

读取的是文本内容,不是字节内容

常用方法有:

  1. read()
  2. read(char[] cbuf)
  3. read(char[] cbuf,int off ,int length)
  4. skip(long n)
  5. close()

inputStreamReader
是字节流转换成字符流的桥梁
原理:

  1. 读取文件内容,即使是字符,也是以字节的形式进行的、
  2. 我们的目的是要将文件中的内容读取到内存中,当我们遇到字符内容时,会被计算机解析成字节,我们通过InputStreamReader指定要读取的字节输入流对象FileInputStream(文件的路径),字符集(UTF8,GBK,UNICODE)读取,保证和源文件的字符集一致
  3. 由于字节输入流是一个字节一个字节进行的读取,而我们的字符是再一些字符集中是以几个字节组成一个字符的,如果对一个字符所对应的字节进行缓冲,存储再字节缓冲区中,再进行统一的解码,就不会出现乱码
  4. InputStreamReader就有缓冲的功能,缓冲之后,通过字符集解码为字符返回

FileReader
文件字符输入流
是以字符进行的读取
FileReader.read() 读取,返回的是下一个字符的字节数

try (FileReader fileReader = new FileReader("input.txt");) {int content;long skip = fileReader.skip(3);System.out.println("The actual number of bytes skipped:" + skip);System.out.print("The content read from file:");while ((content = fileReader.read()) != -1) {System.out.print((char) content);}
} catch (IOException e) {e.printStackTrace();
}结果
The actual number of bytes skipped:3
The content read from file:我是Guide

writer-字符输出流

从内存将数据写入到外部存储器中
常见方法:

  1. writer(int n) 读取当个字符
  2. writer(char[] cbuf) 写入字符数组
  3. writer(char[] cbuf, int off ,int len) 写入字符数组,有偏移量和最大字符长度的限制
  4. writer(String str) 写入字符串
  5. writer(String str ,int off ,int length)
  6. append(字符序列 ) 将字符序列追加到writer对象后
  7. append(char c ) 将指定的字符追加到writer对象后
  8. flush() 刷新输出流,并将所有的缓冲的输出字符强制写出
  9. close() 关闭输出流,释放资源

OutputStreamWriter
与InputStreamReader相反,是将字符流转换为字节流的桥梁

FileWriter

将文件放到文件字符输出流中
try (Writer output = new FileWriter("output.txt")) {// 写入字符,通过字符流的write方法将字符写入文件output.txt中output.write("你好,我是Guide。");
} catch (IOException e) {e.printStackTrace();
}

个人总结,
具体来自https://javaguide.cn/

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

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

相关文章

使用到UDP协议的情况下该如何防护

一、UDP协议概述 UDP(User Datagram Protocol,用户数据报协议)是TCP/IP协议栈中的一种无连接的传输协议,能够提供面向事务的简单不可靠数据传输服务。 1.UDP的应用场景 由于缺乏可靠性且属于非连接导向协议,基于UDP…

java仓库进销存商品库存管理系统springboot+vue

库存管理信息系统研究的内容涉及库存管理的全过程,包括入库、出库、退 货、订货、库存统计查询等等。 根据上述工作流程,库存管理系统将包含以下内容 1)登录信息的输入,密码的修改。 2)基本信息的输入,包括…

JavaScript中,try...catch 语句

在JavaScript中,try...catch 语句用于处理运行时错误。这种结构允许你尝试执行可能会失败的代码,如果失败,则执行 catch 块中的代码。 try 块包含你想要尝试执行的代码,而 catch 块包含当 try 块中的代码抛出错误时执行的代码。 …

部门管理的主要内容:从目标设定到团队发展的全面指南

部门管理是指对一个组织机构中的各个部门进行协调、规划和管理的过程。部门管理的主要内容包括以下几个方面:部门目标和职责的规划、部门人员的管理、部门绩效的评估和监控、部门之间的协调和沟通、部门文化和价值观的塑造。下面为大家具体介绍这些内容 1、部门目标…

vue2混入声明组件、交互流程

vue2中可以使用混入,在当前页面中将混入中声明的组件进行注入 写法 父组件声明混入文件: import mixComponent from "/mixins/mixComponent" export default {mixins:[mixComponent] }mixComponent文件定义方式,类似于一个vue文…

自学网安-IIS服务器

部署环境:win2003 配置环境:winxp ip:10.1.1.2 win2003 ip:10.1.1.1 开始安装 双击“应用程序服务器” 双击“Internet 信息服务(IIS)” 勾选万维网服务,确定然后下一步 查看端口号;netstat …

ConcurrentHashMap的使用以及源码分析

一、ConcurrentHashMap? 1.1 存储结构 ConcurrentHashMap是线程安全的HashMap ConcurrentHashMap在JDK1.8中是以CASsynchronized实现的线程安全 CAS:在没有hash冲突时(Node要放在数组上时) synchronized:在出现ha…

Java 日期时间相互转换 格式化输出

Java 日期时间相互转换 格式化输出 package com.zhong.time;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class SimpleDateFormatTest {public static void main(String[] args) throws ParseException {Date date n…

impala与kudu进行集成

文章目录 概要Kudu与Impala整合配置Impala内部表Impala外部表Impala sql操作kuduImpala jdbc操作表如果使用了Hadoop 使用了Kerberos认证,可使用如下方式进行连接。 概要 Impala是一个开源的高效率的SQL查询引擎,用于查询存储在Hadoop分布式文件系统&am…

设计模式1-访问者模式

访问者模式是一种行为设计模式,它允许你定义在对象结构中的元素上进行操作的新操作,而无需修改这些元素的类。这种模式的主要思想是将算法与元素的结构分离开,使得可以在不修改元素结构的情况下定义新的操作。 所谓算法与元素结构分离&#x…

极速上手:使用Jmeter轻松实现N种参数化

参数化的方式: 一、使用用户自定义变量 一种方式:直接在测试计划中添加用户自定义变量 另外一种方式:配置元件——用户自定义变量 示例:用户自定义变量,登录手机号码 在接口请求的时候,进行引用 请求之后&…

32ADC模数转换器&AD单通道&多通道

目录 一.简介 二.逐次逼近法​编辑 三.结构框图 四.小tips (1)转换模式 (2)触发控制 (3)数据对齐 (4)转换时间 (5)校准 (6)硬件电路 五.相关函数 …

vue使用es的reduce方法编译报错Error: Can‘t resolve ‘core-js/modules/es.array.reduce.js‘

哈喽 大家好啊 最近在vue使用es的reduce方法编译报错Error: Cant resolve core-js/modules/es.array.reduce.js 报错如图所示: 解决方案: npm install --save core-js 然后重新编译下将正常了 参考原文: 使用import异步加载语法报错_module not foun…

Android Split APK介绍

文章目录 Split APKSplit APK 详细介绍概念Android App Bundle(AAB)Split APK 的优势动态分发减小安装包大小模块化和渠道分发 Split APK 的类型基于屏幕密度### 基于 CPU 架构基于语言 实现 Split APK Split APK Split APK 是 Android 中一种应用程序安…

SpringBoot实战第二天

今日战报 继续完善用户相关接口开发: 1.完成获取用户信息功能 2.完成更新用户信息功能 3.完成更新用户头像功能 4.完成更新用户密码功能 获取用户信息 接口文档 如接口文档所示,我们需要做的就是从header中的Authorization中读取token,解码…

问题:测风站应设置在平直的巷道中,其前后()范围内不得有障碍物和拐弯等局部阻力。 #微信#媒体

问题:测风站应设置在平直的巷道中,其前后()范围内不得有障碍物和拐弯等局部阻力。 参考答案如图所示

stable-diffusion | v1-5-pruned.ckpt和v1-5-pruned-emaonly.ckpt的区别

https://github.com/runwayml/stable-diffusion?tabreadme-ov-file#reference-sampling-script 对于 1.5 模型,其中可能包括四部分:标准模型、文本编码器、VAE模型、EMA模型。 标准模型:生成图片的核心模块,潜空间中的前向扩散和…

C语言中那些后知后觉的细节冷知识(二)typedef、死循环、位移、内存访问

系列文章目录 C语言中那些后知后觉的细节冷知识(一)static、const、volatile、数组、宏 C语言中那些后知后觉的细节冷知识(二)typedef、死循环、位移、内存访问 持续更新中… … 文章目录 系列文章目录前言一、typedef二、死循环…

Qt之漂亮的地球

这个画的是一个东西围绕着中心的地球不停的旋转,可以放在界面的中部,增加美感。 展示 界面展示 设计过程 标题在之前的博客有写过,这里不再重复 下面是关于地球旋转的相关 1.资源文件添加 先将相关的资源文件添加,三个图片 2…

【lesson32】MySQL用户管理

文章目录 用户管理介绍用户用户信息创建用户 删除用户修改用户密码数据库的权限给用户授权回收权限 用户管理介绍 用户 用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中 //操作语法 mysql> use mysql; Database changed mysql> select host,use…