java bufferedinputstream 编码_java中关于编码的问题(字符转换流及字符缓冲流 )
上次我们使用的是字节流,还有一种方式就是字符流,上次说过如何分辨使用哪种流,如果记事本可以读懂则使用字符流,否则使用字节流。使用字符流就需要牵扯到编码的问题,下面给出一种转化流的格式。
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中关于编码的问题(字符转换流及字符缓冲流 )相关推荐
- java bcd码_java中BCD编码
Java中实现的BCD编码,供有兴趣的参考,欢迎批评指正 public class BCDCode { /** * * * @param bcd 数字字符串 * @return * @see [类.类 ...
- java中转为整形的编码_java中Unicode编码转化为中文
转自:https://www.cnblogs.com/clnchanpin/p/6892870.html public static String UnicodeToUtf8(String theSt ...
- 25.java中IO流的应用---缓冲流、转换流以及对象流过程(附讲解和练习)
处理流之一:缓冲流 为了提高数据读写的速度, Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区. 缓冲流要" ...
- Java IO流之【缓冲流和文件流复制文件对比】
与文件流相比,缓冲流复制文件更快 代码: package Homework;import java.io.BufferedOutputStream; import java.io.File; impo ...
- java 解码和加密 汉信码_java中的编码与解码
编码表概述和常见的编码表 概述:有字符及其对应的数值组成的一张表 常见的编码表 ASCII:美国标准信息交换表 ISO8859-1:拉丁码表,欧洲码表 GB2312:中国的中文编码表 GBK:中国的中 ...
- java string 编码_java中GBK编码格式转成UTF8,用一段方法实现怎么做?
unicode是一种"编码",所谓编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射而已,可以理解成一个很大的对应表格 GBK.UTF-8是一种"编码 ...
- java http编码_JAVA中的http请求处理编码URLEncode
JAVA中的http请求接收数据处理编码问题URLEncode编码和URLDecoder解码运用方法 近期在搞直接调用接口,碰到一个URLEncode编码问题,Json中含有URLEncode编码过的 ...
- java 字节编码_java中字符与字节的编码关系
一个英文字母字符存储需要1个字节.在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节. 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节.在 ...
- java urlencode 解码_java.net.URLEncode编码 与 URLDecode解码问题
网页中的表单使用POST方法提交时,数据内容的类型是 application/x-www-form-urlencoded,这种类型会: 1.字符"a"-"z", ...
最新文章
- Java 求一批数的绝对值
- 入坑emacs之配置文件 .emas.d/init.el -v1.0
- 服务器文件每天备份重新命名,定时备份服务器文件至本地电脑
- echarts 柱状图不显示y坐标轴_Python+matplotlib自定义坐标轴位置、颜色、箭头
- 改善深层神经网络:超参数调整、正则化以及优化——2.8 Adam算法(Adaptive Moment Estimation)
- 管理节点连接不上sql节点_华为云IEF智能边缘平台十万边缘节点管理技术深度解读学习笔记...
- protocol buffer java_Protocol Buffer Java实例
- 海量数据挖掘MMDS week7: 相似项的发现:面向高相似度的方法
- 洛谷P2038 无线网络发射器选址 水题 枚举
- 好用到爆!电脑必装软件清单,四款软件工具,一个都绝不能少!让你的电脑瞬间开挂!
- java自动填写网页表格,excel表格调用网页数据库-如何用Excel自动填写网页数据
- 西安网络安全周 | 联软科技:论端点安全在零信任体系中的重要性
- 仪表框架 3500/05-01-01-00/HONEYWELL51403776-100
- MFI认证与PPID
- 微信小程序开发手记1.0
- 全球与中国玻璃通孔中介层市场深度研究分析报告
- 想做游戏测试工程师?这几点不知道可不行!
- world中英文字体分离、字符间距较大解决
- 中国顶尖“黑客”团队:一半是历年高考状元
- vue+photo-sphere-viewer 渲染全景图片,带给你沉浸式体验