转换流:字符流和字节流之间的桥梁

用于处理程序的编码问题

OutputStreamWriter类:字符转字节流

写文本文件:

package demo;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter; public class Demo {
public static void main(String[] args) throws IOException {
writeGBK();
writeUTF8();
} public static void writeGBK() throws IOException {
FileOutputStream fos = new FileOutputStream("d:\\gbk.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
osw.write("你好");// gbk的一个汉字是2个字节
osw.close();
} public static void writeUTF8() throws IOException {
FileOutputStream fos = new FileOutputStream("d:\\utf8.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
osw.write("你好");// utf8的一个汉字是3个字节
osw.close();
}
}

InputStreamReader类:

字节转字符流过程:

这里读取上面写的文本文件:

package demo;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader; public class Demo {
public static void main(String[] args) throws IOException {
readGBK();
readUTF8();
} public static void readGBK() throws IOException {
FileInputStream fis = new FileInputStream("d:\\gbk.txt");
InputStreamReader isr = new InputStreamReader(fis);
char[] ch = new char[1024];
int len = isr.read(ch);
System.out.println(new String(ch, 0, len));
} public static void readUTF8() throws IOException {
FileInputStream fis = new FileInputStream("d:\\utf8.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
char[] ch = new char[1024];
int len = isr.read(ch);
System.out.println(new String(ch, 0, len));
}
}

这里注意,如果编码集和读取问文本不一致,就会发生乱码或者输出?的问题

Java学习笔记39(转换流)的更多相关文章

  1. 6.4(java学习笔记)转换流

    一.乱码问题 我们来看下列例子: public class ConStream { //当前平台默认采用GBK public static void main(String[] args){ Stri ...

  2. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  3. 6.5(java学习笔记)其他流(字节数组流,数据流,对象流,打印流)

    一.字节数组流 之前使用输入输出流的操作的对象是文件,而这里字节数组流操作的对象是内存,内存可以看做是一个字节数组. 使用字节数组流读写就可以看做是从内存A到内存B的读写,对象时内存即字节数组. 1. ...

  4. java学习笔记39(sql事物)

    在之前的学习中,我们学习了使用PreparedStatement类,使用这个类消除了sql注入的隐患,可是,还有些一些其他的隐患,这里以银行转账业务为例, 假设  一个银行,张三在里面存了1000元, ...

  5. 6.3(java学习笔记)缓冲流

    一.缓冲流 使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出. 避免程序频繁的和文件直接操作,这样操作有利于提高读写效率. 缓冲流是构建在输入输出流之上的,可以理 ...

  6. Java学习笔记——I/O流常用类之间的继承关系及构造方法

    朝辞白帝彩云间,千里江陵一日还. 两岸猿声啼不住,轻舟已过万重山. ——早发白帝城 总结一下有哪些I/O流: 输入流方法主要是read()和close(),输出流方法主要是write().flush( ...

  7. Java学习笔记——I/O流

    朝辞白帝彩云间,千里江陵一日还.两岸猿声啼不尽,轻舟已过万重山. --早发白帝城 我们老师写代码有个特点,就是简洁.每一句的意图都十分明确.所以他讲课的速度也比较快. 跑题了,说说I/O流: 1.字节 ...

  8. java学习笔记之字符流文件复制

    字符文件复制 FileReader fr =new FileReader("b.txt");//绑定源文件 FileWriter fw= new FileWriter(" ...

  9. Java学习笔记-10.io流

    1.输入流,只能从中读取数据,而不能向其写出数据.输出流,只能想起写入字节数据,而不能从中读取. 2.InputStream的类型有: ByteArrayInputStream 包含一个内存缓冲区,字 ...

随机推荐

  1. day37 异步回调和协程

    异步回调 """ 异步任务使用场景 爬虫 1.从目标站点下载网页数据 本质就是HTML格式字符串 2.用re从字符串中提取出你需要的数据 ""&quo ...

  2. Windows server 2012 R2 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同

    Windows server 2012 R2 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同.”使用克隆的系统时,加域是出现如下问题.“无法完成域加入,原因是试图加入的域的SI ...

  3. mysql学习笔记--数据完整性

    一.数据完整性包括: 1. 域完整性 2. 实体完整性 3. 引用完整性 二.保证实体完整性 1. 主键约束 2. 唯一约束 3. 自动增长列 三.保证域完整性 1. 数据类型约束 2. 非空约束 3 ...

  4. 151. Reverse Words in a String翻转一句话中的单词

    [抄题]: Given an input string, reverse the string word by word. Example: Input: "the sky is blue& ...

  5. js学习(5)语法专题

    Js是一种动态类型语言,变量没有类型限制,可以随时赋值 强制转换: 主要指使用Number(),String()和Boolean()三个函数,手动将各个类型的值,分别转换为数字,字符串或布尔值 Num ...

  6. node.js中 express + multer 处理文件上传

    multer中间件,可以很方便的结合express处理用户表单上传的文件. 一.安装multer npm install multer 二.处理单个文件上传 const express = requi ...

  7. Django model进阶

    Django-model进阶   QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Ent ...

  8. findViewById(R.id.btn_first) 给写成 R.layout.

    窗体内放了个按钮, findViewById(R.id.btn_first) 给写成 R.layout. 在java 里边引用结果就是找不到那个id 找了半天找不到原因, 奔着网上常见R找不到的问题, ...

  9. dbus 消息和消息总线实例讲解-一

    应用程序A和消息总线连接,这个连接获取了一个众所周知的公共名(记作连接A).应用程序A中有对象A1提供了接口I1,接口I1有方法M1. 应用程序B和消息总线连接,要求调用连接A上对象A1的接口I1的方 ...

  10. Eclipse 中打开 python 交互窗口