您的位置:首页 > 职场人生

黑马程序员_84_IO转换流

2015-06-11 01:17 417 查看
 ——- android培训java培训、期待与您交流! ———-

概述

转换流的由来:

字符流与字节流之间的桥梁

方便了字符流与字节流之间的操作

转换流的应用:

字节流中的数据都是字符时,转成字符流操作更高效。

转换流:

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();
}
}
}


运行结果图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: