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

OutputStreamWriter

OutputStreamWriter(OutputStream os):默认编码,GBK

OutputStreamWriter(OutputStream os,String charsetName):指定编码。

InputStreamReader

InputStreamReader(InputStream is):默认编码,GBK

InputStreamReader(InputStream is,String charsetName):指定编码

原则很简单,如果你是用了那种方式编码就使用哪种方式解码。java默认的应该是GBK,所以如果你发现用某些编辑器打开时乱码,那么一定是使用了不同的解码格式。

在转化流中我们也可以写入字节流。比如,ios.write(a),write('97'),这样是错误的,因为我们的转化流是字符流,一个字符=两个字节,所以我们需要使用刷新来更新缓冲区。在上面的语句后面加上ios.flush就好了。总结,也就是说在我们使用字符流的时候,尽量多使用flush来刷新。当然我们也可以不适用flush,因为close方法执行的时候会自动的刷新一次。但是和flush相比,它执行后,它的流对象就不可以使用了。这点需要留意。

由于我们的常见操作使用本地默认的编码,所以java还给了一个简化版的子类:FileWriter and FileReader,方法基本上一样的,除非你对编码方式有着特别的要求。

总结

IO流

|--字节流

|--字节输入流

InputStream

int read():一次读取一个字节

int read(byte[] bys):一次读取一个字节数组

|--FileInputStream

|--BufferedInputStream

|--字节输出流

OutputStream

void write(int by):一次写一个字节

void write(byte[] bys,int index,int len):一次写一个字节数组的一部分

|--FileOutputStream

|--BufferedOutputStream

|--字符流

|--字符输入流

Reader

int read():一次读取一个字符

int read(char[] chs):一次读取一个字符数组

|--InputStreamReader

|--FileReader

|--BufferedReader

String readLine():一次读取一个字符串

|--字符输出流

Writer

void write(int ch):一次写一个字符

void write(char[] chs,int index,int len):一次写一个字符数组的一部分

|--OutputStreamWriter

|--FileWriter

|--BufferedWriter

void newLine():写一个换行符

void write(String line):一次写一个字符串

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

  1. java bcd码_java中BCD编码

    Java中实现的BCD编码,供有兴趣的参考,欢迎批评指正 public class BCDCode { /** * * * @param bcd 数字字符串 * @return * @see [类.类 ...

  2. java中转为整形的编码_java中Unicode编码转化为中文

    转自:https://www.cnblogs.com/clnchanpin/p/6892870.html public static String UnicodeToUtf8(String theSt ...

  3. 25.java中IO流的应用---缓冲流、转换流以及对象流过程(附讲解和练习)

    处理流之一:缓冲流  为了提高数据读写的速度, Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区.  缓冲流要" ...

  4. Java IO流之【缓冲流和文件流复制文件对比】

    与文件流相比,缓冲流复制文件更快 代码: package Homework;import java.io.BufferedOutputStream; import java.io.File; impo ...

  5. java 解码和加密 汉信码_java中的编码与解码

    编码表概述和常见的编码表 概述:有字符及其对应的数值组成的一张表 常见的编码表 ASCII:美国标准信息交换表 ISO8859-1:拉丁码表,欧洲码表 GB2312:中国的中文编码表 GBK:中国的中 ...

  6. java string 编码_java中GBK编码格式转成UTF8,用一段方法实现怎么做?

    unicode是一种"编码",所谓编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射而已,可以理解成一个很大的对应表格 GBK.UTF-8是一种"编码 ...

  7. java http编码_JAVA中的http请求处理编码URLEncode

    JAVA中的http请求接收数据处理编码问题URLEncode编码和URLDecoder解码运用方法 近期在搞直接调用接口,碰到一个URLEncode编码问题,Json中含有URLEncode编码过的 ...

  8. java 字节编码_java中字符与字节的编码关系

    一个英文字母字符存储需要1个字节.在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节. 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节.在 ...

  9. java urlencode 解码_java.net.URLEncode编码 与 URLDecode解码问题

    网页中的表单使用POST方法提交时,数据内容的类型是 application/x-www-form-urlencoded,这种类型会: 1.字符"a"-"z", ...

最新文章

  1. Java 求一批数的绝对值
  2. 入坑emacs之配置文件 .emas.d/init.el -v1.0
  3. 服务器文件每天备份重新命名,定时备份服务器文件至本地电脑
  4. echarts 柱状图不显示y坐标轴_Python+matplotlib自定义坐标轴位置、颜色、箭头
  5. 改善深层神经网络:超参数调整、正则化以及优化——2.8 Adam算法(Adaptive Moment Estimation)
  6. 管理节点连接不上sql节点_华为云IEF智能边缘平台十万边缘节点管理技术深度解读学习笔记...
  7. protocol buffer java_Protocol Buffer Java实例
  8. 海量数据挖掘MMDS week7: 相似项的发现:面向高相似度的方法
  9. 洛谷P2038 无线网络发射器选址 水题 枚举
  10. 好用到爆!电脑必装软件清单,四款软件工具,一个都绝不能少!让你的电脑瞬间开挂!
  11. java自动填写网页表格,excel表格调用网页数据库-如何用Excel自动填写网页数据
  12. 西安网络安全周 | 联软科技:论端点安全在零信任体系中的重要性
  13. 仪表框架 3500/05-01-01-00/HONEYWELL51403776-100
  14. MFI认证与PPID
  15. 微信小程序开发手记1.0
  16. 全球与中国玻璃通孔中介层市场深度研究分析报告
  17. 想做游戏测试工程师?这几点不知道可不行!
  18. world中英文字体分离、字符间距较大解决
  19. 中国顶尖“黑客”团队:一半是历年高考状元
  20. vue+photo-sphere-viewer 渲染全景图片,带给你沉浸式体验

热门文章

  1. Problem A: 素数对
  2. 阿里云容器服务入选云原生边缘「领导力企业TOP3」
  3. 认识 lib 目录里的 .so 文件
  4. 学Java编程选择Java面授教学最有效
  5. 小编带你了解oracle使用索引和不使用索引性能分析
  6. Oracle 11g 中告警日志的位置
  7. 面试一位硕士海龟前端小姐姐有感
  8. html div转换图片
  9. 51Nod 1102 面积最大的矩形 +1272 最大距离 单调栈
  10. Fedora 23 U盘启动出现“Failed to load ldlinux.c32”解决