一、理论:

1、字符流和字节流区别是什么?

字符流=字节流+编码集,在实际读取的时候其实字符流还是按照字节来读取,但是会更具编码集进行查找编码集字典解析相应的字节,使得一次读取出一个字符;

2、什么是转换流?

转换流就是原本是字节流,但是读取到的数据是字符,所以我们希望使用字符流来进行操作,那么就可以使用转换流进行转换;

转换流=字节流+编码集。

转换流的特点是可以指定编码集。

3、转换流的作用:

(1)、从控制台读取数据输入(键盘输入),将它们写入到文件(我们写的是字符吧);

(2)、当对文件进行解析的时候,如果涉及编码,就需要使用转换流进行解码--------乱码可不好玩。

二、实战:

1、从键盘输入的文本保存到文件:

try (InputStreamReader inReader = new InputStreamReader(System.in)) {

StringBuilder sb = new StringBuilder();

int ch;

try (OutputStream out = new FileOutputStream("console.txt")) {

while ((ch = inReader.read()) != -1) {

if ((char) ch == '\r')

continue;

if ((char) ch == '\n') {

System.out.println(sb.toString().toUpperCase());

out.write(sb.toString().getBytes());

sb.delete(0, sb.length());

continue;

}

sb.append((char) ch);

if (sb.toString().equals("esc"))

break;

}

}

}

1)、我们经常使用的System.out.println就是输入流,自然,和它相对应的就是输入流,输入者是键盘,输出的对象是到控制台;

2、编码和解码:

try (BufferedReader inReaderGBK = new BufferedReader(new InputStreamReader(new FileInputStream("gbk.txt"), "gbk"))) {

try (BufferedWriter outWriterUTF8 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("人类简史.txt"), "utf-8"))) {

int ch;

while ((ch = inReaderGBK.read()) != -1) {

outWriterUTF8.write(ch);

}

}

}

在上面的代码中,"gbk.txt"  文件是使用GBK编码,而 "人类简史.txt" 文件是使用utf-8;我们使用转换流把gbk编码格式的文件转换成了utf-8编码格式的文件。原理如下:

1、读取 "gbk.txt" 的时候,先读取的是字节,然后根据我们指定的编码集去查找字典,因此可以读取出正确的字符;

2、而在写入 "人类简史.txt" 文件的时候,字符先是经过了转换流,转换流接收到了字符,看了一下自己被指定为utf-8格式的,所以就去查编码集,把接收到的字符转换成了utf-8编码的格式,然后写入了文件;

3、over。

Java——IO类,转换流简化写法

body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

Java - io输入输出流 --转换流

转换流  转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...

Java IO流之转换流

一.转换流 1.在IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换流 2.转换流用于在字节流和字符流之间转换 3.转换流本身是字符流 二.两种转换流 Ou ...

java ->IO流_转换流

转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputStre ...

我爱Java系列之《JavaEE学习笔记day12》---【缓冲流、转换流、序列/反序列化流、打印流】

[缓冲流.转换流.序列/反序列化流.打印流] 一.缓冲流 1.字节缓冲输出流 java.io.BufferedOutputStream extends OutputStream 高效字节输出流 写入文 ...

Java第三阶段学习(三、字符流、转换流)

一.字节流读取中文时出现的问题: 文件中有中文时,用字节流读取会出现乱码的问题,因为一个中文为两个字节. 二.字符编码表 编码表:其实就是生活中字符和计算机二进制的对应关系表. 1.ascii: 一个 ...

01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

IO流之转换流

转换流 OutputStreamWriter类 查阅OutputStreamWriter的API介绍,OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流 ...

10缓冲流、转换流、序列化流、Files

十.流 10.1 缓冲流 10.1.1 概述                 缓冲流是对4个基本的FileXxx流的增强,所以也是4个流,按照数据类型进行分类                     ...

javaSE学习笔记(15) ---缓冲流、转换流、序列化流

javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...

随机推荐

一、List的扩展

前言 List的三个扩展方法 1.处理符合in()格式的扩展方法 2.处理符合SelectListItem类型的扩展方法(SelectListItem类型是下拉框要用到的类型) 3.Distinct方 ...

魔兽世界服务器Trinitycore分析二:auth server的main函数

TrinityCore由生成两个运行文件authserver和world server以及一堆DLL(或so)文件的子项目组成(先忽略map_extractor等几个工具项目). authserver ...

[Apio2012]dispatching

[Apio2012]dispatching 时间限制: 1 Sec  内存限制: 128 MB 题目描述 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一 ...

A1019. General Palindromic Number

A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

Redis持久化——RDB快照

一.是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会先将数 ...

IE中Ext的comboBox跑到页面左上角

{ xtype:'combo', width:100, //id:'exTypeCom', name:'exType', hiddenName:'exType', displayField:'text ...

javascript高级程序设计第一章

看后总结: 1.javascript的组成成分:ECMAscript+DOM+BOM

使用JAVA爬取网页图片

经过之前的HttpURLConnection还有各种流的结束,已经可以开始理解怎么下载网页上的一张图片了. 对各种流不理解的话,可以翻翻前面的随笔,讲得都比较详细.在此就不细讲了. 主要流程: 1.H ...

HANA 存储过程

You can develop secure procedures using SQLScript in SAP HANA by observing the following recommendat ...

iptables的扩展,layer7实现

l7filter:介绍 能过滤7层协议,例如过滤QQ.迅雷 原版只支持2.6.28,不支持centos6的2.6.32:马哥的版本支持2.6.32 实现l7filter: 给内核(netfilter) ...

java 流 改变编码_Java-IO流之转换流的使用和编码与解码原理相关推荐

  1. java序列化编码_java IO操作(输入,输出,序列化,编码方式)示例代码 第一部分...

    File类主要功能有文件的创建,目录的创建,临时文件的创建,文件和目录的删除以及文件列表的获取和过滤工作.下面是一个关于File类的操作. package com.guan.chapter27.jav ...

  2. java怎么改变数据类型_java数据类型之间的转换,是怎么回事啊? - 收获啦

    1.数据类型的分类 2.比较数据类型之间的字节大小 1字节=8位 . 3.转换中的知识点 *java中整数类型默认的int类型:小数类型默认的double: *String的字符串转化为char类型时 ...

  3. java io流学设置编码_Java学习日志(21-2-IO流-基本数据类型与字节数组对象与、编码解码)...

    操作基本数据类型的流对象DataStream /* 可以用于操作基本数据类型数据的流对象 */ import java.io.*; class DataStreamDemo{ public stati ...

  4. java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...

    IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...

  5. java bufferedinputstream 编码_java中关于编码的问题(字符转换流及字符缓冲流 )

    上次我们使用的是字节流,还有一种方式就是字符流,上次说过如何分辨使用哪种流,如果记事本可以读懂则使用字符流,否则使用字节流.使用字符流就需要牵扯到编码的问题,下面给出一种转化流的格式. OutputS ...

  6. 基于java洗浴中心管理系统_Java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  7. java io流不关闭_Java IO流关闭问题的深入研究

    前几天看了一篇文章(见参考文章),自己动手试了下,发现有些不一样结论,作博客记录下,本文主要研究两个问题: 包装流的close方法是否会自动关闭被包装的流? 关闭流方法是否有顺序? 包装流的close ...

  8. java文件流写入文件_JAVA IO流编程 实现文件的写入、写出以及拷贝

    一.流的概念 流:数据在数据源(文件)和程序(内存)之间经历的路径. 输入流:数据从数据源(文件)到程序(内存)的路径. 输出流:数据从程序(内存)到数据源(文件)的路径. 以内存为参照,如果数据向内 ...

  9. java 输入流关闭顺序_Java IO流中先关闭输出流还是先关闭输入流?为什么?

    java中需要手动释放的资源bai常见的有以下两个: 流相du关资zhi源 流相关资源一般遵循: 1)先开后关dao,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输 ...

  10. Java - io输入输出流 --转换流

    转换流  转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...

最新文章

  1. FastReport 导出pdf时中文乱码的解决办法
  2. python判断远程文件是否存在
  3. springcloud(七):配置中心svn示例和refresh
  4. 时间段为查询条件时的日期边界查询不到问题
  5. django 1.9 mysql_Python3.5+Django1.9+MySQL57+PyCharm5.0.1配置
  6. php图片生成缩略图_PHP实现生成图片缩略图函数
  7. QPW 用户签到日志表(tf_user_signin_log)
  8. android 编辑自定义可编辑表格,smart 框架 列表 可编辑表格
  9. 计算机时区找不到北京,系统缺少北京时区的解决办法
  10. ​特征工程系列:特征预处理(上)
  11. 计算机病毒手动查杀,如何手动查杀计算机病毒
  12. 区块链四:共识机制——PBFT算法深入讲解
  13. Gebru被辞退的背后真相:指出BERT的4大危害,威胁谷歌商业利益
  14. 邮票的制作(1.主要画笔工具2.钢笔工具)
  15. 把kali linux 装进 U盘并实现数据可存储
  16. 动态管理电源功能 计算机 中标,东北石油大学省创新基地奖励金设备仪器采购第四标段:黑龙江省油气田控制与动态监测实验室中标公告2020-11-11...
  17. 批归一化《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
  18. mysql 截取第一个字符_MySQL 字符串截取SUBSTRING()函数
  19. 【CG】汇总开源的三维图形/计算几何/CAD算法库
  20. 交易码 MWS X7 会计科目表 XXX 没有在表 T030K 中定义/交易码 VST J2 会计科目表 XXX 没有在表 T030K 中定义

热门文章

  1. 安装Acrobat XI Pro、SQL Server 2000时,提示另一个SQL Server安装程序实例已在运行的解决办法
  2. bars 除障句完整_精选每日一句早安问候语语录49句
  3. P44 单行子查询案例分析
  4. StreamNative 宣布 2300 万美元 A 轮融资,Prosperity7 Ventures 与华泰创新联合领投
  5. 香港室内设计公司【Junee】申请纳斯达克IPO上市,募资2500 万美元
  6. win10系统Cortana搜索功能失效解决方法
  7. SPI driver
  8. 上海市高校大学生程序设计邀请赛 C:小花梨判连通
  9. Google 三架马车:GFS、BigTable、MapReduce
  10. 【子桓说】西安女硕士:我挺感谢新媒体的