黑马程序员_84_IO转换流
2015-06-11 01:17
417 查看
——- android培训、java培训、期待与您交流! ———-
字符流与字节流之间的桥梁
方便了字符流与字节流之间的操作
转换流的应用:
字节流中的数据都是字符时,转成字符流操作更高效。
转换流:
InputStreamReader:字节到字符的桥梁,解码。
OutputStreamWriter:字符到字节的桥梁,编码。
InputStreamReader是字节流通向字符流的桥梁。
运行结果图
小结
使用字节流读取一个中文字符需要读取两次,因为一个中文字符由两个字节组成,而使用字符流只需读取一次。
System.out的类型是PrintStream,属于OutputStream类别。
OutputStreamReader是字符流通向字节流的桥梁。
运行结果图
运行结果图
源码
运行结果图
源码
运行结果图
源码
运行结果图
概述
转换流的由来:字符流与字节流之间的桥梁
方便了字符流与字节流之间的操作
转换流的应用:
字节流中的数据都是字符时,转成字符流操作更高效。
转换流:
InputStreamReader:字节到字符的桥梁,解码。
OutputStreamWriter:字符到字节的桥梁,编码。
InputStreamReader是字节流通向字符流的桥梁。
示例
示例1
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class TransStreamDemo{ public static void main(String[] args) throws IOException { //字节流 InputStream in = System.in; //将字节转成字符的桥梁,转换流 InputStreamReader isr = new InputStreamReader(in); //对字符流进行高效装饰,缓冲区 BufferedReader bufr = new BufferedReader(isr); String line = null; //读取到了字符串数据 while((line = bufr.readLine()) != null){ if("over" .equals(line)) break; System.out.println(line.toUpperCase()); } } }
运行结果图
小结
使用字节流读取一个中文字符需要读取两次,因为一个中文字符由两个字节组成,而使用字符流只需读取一次。
System.out的类型是PrintStream,属于OutputStream类别。
OutputStreamReader是字符流通向字节流的桥梁。
示例2
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; public class TransStreamDemo{ public static void main(String[] args) throws IOException { InputStream in = System.in; InputStreamReader isr = new InputStreamReader(in); //字符流 BufferedReader bufr = new BufferedReader(isr); //字节流,字节数据 OutputStream out = System.out; //数据到了osw,目的地out控制台 OutputStreamWriter osw = new OutputStreamWriter(out); BufferedWriter bufw = new BufferedWriter(osw); String line = null; while((line = bufr.readLine()) != null){ if("over" .equals(line)) break; //将字符数据用缓冲区对象将数据写入缓冲区,目的地是osw bufw.write(line.toUpperCase()); bufw.newLine(); //osw.write(line.toUpperCase() + "\r\n");可以替代上面两行代码 bufw.flush(); } } }
运行结果图
示例2简化代码
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class TransStreamDemo{ public static void main(String[] args) throws IOException { BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; while((line = bufr.readLine()) != null){ if("over" .equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } } }
运行结果图
练习
练习1
需求:将键盘录入的数据写入到一个文件中。源码
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.IOException; public class TransStreamDemo{ public static void main(String[] args) throws IOException { BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt"))); String line = null; while((line = bufr.readLine()) != null){ if("over" .equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } } }
运行结果图
练习2
需求:将一个文本文件内容显示在控制台上。源码
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class TransStreamDemo{ public static void main(String[] args) throws IOException { BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt"))); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; while((line = bufr.readLine()) != null){ if("over" .equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } } }
运行结果图
练习3
需求:将一个文本文件中的内容复制到另一个文件中。源码
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class TransStreamDemo{ public static void main(String[] args) throws IOException { BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt"))); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt"))); String line = null; while((line = bufr.readLine()) != null){ if("over" .equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } } }
运行结果图
相关文章推荐
- 黑马程序员_83_IO字节流
- 黑马程序员_82_装饰设计模式
- 遇见程序员男友
- 程序员如何活得明白
- 叶正盛:再次写给我们这些浮躁的程序员
- 写给年轻程序员创业的一封信
- 【剑指offer】面试题二:实现Singleton模式
- 程序员的量化交易之路(33)--QuantConnect之案例1
- 黑马程序员——JAVA基础---泛型
- 黑马程序员——基础篇——关于字节流和字符流的区别
- 黑马程序员----java线程
- 黑马程序员-Java基础
- 优雅的scala---乘法口诀表
- 国泰君安实习笔试面试情况
- 程序员技术练级攻略——推荐书目
- 黑马程序员——java基础——递归
- 黑马程序员——Java基础——File、Properties类
- 黑马程序员----字符串
- ABAP面试题1-关于屏幕事件
- 打磨程序员的专属利器——快捷键