JAVA【IO五】转换流
来源:互联网 发布:韩春雨 知乎 编辑:程序博客网 时间:2024/06/05 03:28
在《Java网络编程》中,有这样一段话:
”Reader和Writer最重要的子类是InputStreamReader和OutputStreamWriter类。
InputStreamReader类包含了一个底层输入流,可以从中读取原始字节。它根据指定的编码方式,将这些字节转换为Unicode字符。
OutputStreamWriter从运行的程序中接收Unicode字符,然后使用指定的编码方式将这些字符转换为字节,再将这些字节写入底层输出流中。“
转换流的特点:
1. 其是字符流和字节流之间的桥梁
2. 可对读取到的字节数据经过指定编码转换成字符
3. 可对读取到的字符数据经过指定编码转换成字节
什么时候使用转换流呢?
1,源或者目的对应的设备是字节流,但是操作的却是文本数据,可以使用转换作为桥梁。提高对文本操作的便捷。 参见示例1-1 1-2
2,一旦操作文本涉及到具体的指定编码表时,必须使用转换流 。参见示例2-1 2-2
关于指定编码表的作用,建议参考这篇文章从内存角度解析Java字符编码,一定会豁然开朗的。
具体的对象体现:
1. InputStreamReader:字节到字符的桥梁
2. OutputStreamWriter:字符到字节的桥梁
这两个流对象是字符体系中的成员,它们有转换作用,本身又是字符流,所以在构造的时候需要传入字节流对象进来。
示例1-1:字节流System.in转为字符流BufferedReader
读取键盘输入的每一行内容,并写入到文本中,直到遇到over行结束输入
- public static void main(String[] args) throws IOException {
- //字节流–>字符流
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- BufferedWriter bw = new BufferedWriter(new FileWriter(“is2.txt”));
- String line = null;
- while((line = br.readLine())!=null){
- if(“over”.equals(line)){
- break;
- }
- bw.write(line);
- bw.newLine();
- bw.flush();
- }
- bw.close();
- br.close();
- }
public static void main(String[] args) throws IOException { //字节流-->字符流 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new FileWriter("is2.txt")); String line = null; while((line = br.readLine())!=null){ if("over".equals(line)){ break; } bw.write(line); bw.newLine(); bw.flush(); } bw.close(); br.close(); }
实例1-2 字符流BufferedReader转为字节流System.out
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new FileReader(“is2.txt”));
- //字符流–>字节流
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
- String line = null;
- while ((line = br.readLine())!=null) {
- bw.write(line);
- bw.newLine();
- bw.flush();
- }
- bw.close();
- br.close();
- }
public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new FileReader("is2.txt")); //字符流-->字节流 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; while ((line = br.readLine())!=null) { bw.write(line); bw.newLine(); bw.flush(); } bw.close(); br.close(); }
示例2-1 采用指定的编码读取文本文件
- public static void main(String[] args) throws IOException {
- //在IO流中,如果想指定编码读写数据,只能使用转换流。
- //采用指定编码从文本文件中读取内容
- BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(“C:\\a.txt”), “UTF-8”));
- String line = null;
- while ((line=br.readLine())!=null) {
- System.out.println(line);
- }
- br.close();
- }
public static void main(String[] args) throws IOException { //在IO流中,如果想指定编码读写数据,只能使用转换流。 //采用指定编码从文本文件中读取内容 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\a.txt"), "UTF-8")); String line = null; while ((line=br.readLine())!=null) { System.out.println(line); } br.close(); }
实例2-2 采用指定的编码输出文本文件
- public static void main(String[] args) throws IOException {
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(“C:\\a.txt”), “UTF-8”));
- bw.write(”I am 君山”);
- bw.close();
- }
public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\a.txt"), "UTF-8")); bw.write("I am 君山"); bw.close(); }
阅读全文
0 0
- JAVA【IO五】转换流
- Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter
- Java IO 转换流
- Java IO 转换流
- Java io 输入输出流(五)
- java 之 IO 转换流
- java IO-输入输出流(五)
- 黑马程序员 JAVA基础<五> IO流
- Java IO流详解(五)
- 【Java基础 五】---输入输出io流
- java转换流,io流规律
- java.基础io流.转换流
- Java IO流之转换流
- java中IO流中的转换流
- JAVA学习—IO—转换流
- Java - IO - 转换流 - InputStreamReader - OutputStreamWriter
- JAVA中IO技术的转换流
- java.se.io.8.转换流
- 48.笔记 MySQL学习——多表删除和更新
- Java数据结构实现之链表
- 49.笔记 MySQL学习——事务处理
- NOIP2017普及组复赛总结
- ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值。 Input 有多组测试数据,每组测试数据第一行为2个正整数,分别代表苹果的个数n
- JAVA【IO五】转换流
- 415. Add Strings
- 大数据早报:机器人公司优必选获腾讯 4000 万美元 C 轮融资 比特币逼近8000美元再创新高(11.18)
- c++primer 第五版
- 分析非结构化数据的10个步骤
- 设置图列(key/legend)的位置和大小 --gnuplot
- 商机 | 大数据/政务云采购清单 招标7起,最高招标价为850万(11.15-11.17)
- SQL Server安装教程
- 50.笔记 MySQL学习——利用事务处理保证语句