转换流InputStreamReader、OutputStreamWriter
package com.qianfeng.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/*
* 转换流:本身是字符流
* 分类:
* InputStreamReader:从字节输入流到字符读入流
* OutputStreamWriter:从字节输出流到字符写出流
*
* 场景:要使用字符缓冲流的readLine(),newLine()方法服务于字节流。
*
* 实例:使用字符缓冲流的readLine(),newLine()等方法实现在控制台一次读一行数据。
*
*/
public class Demo2 {
public static void main(String[] args) throws IOException {
//将标准输入流转成字符缓冲读入流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
//将标准输出流转成字符缓冲输出流
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
//读写
String data=null;
while((data=bufferedReader.readLine())!=null){
bufferedWriter.write(data);
bufferedWriter.newLine();
//手动刷新
bufferedWriter.flush();
//当输入over的时候结束
if(data.equals("over")){
break;
}
}
//关闭流
bufferedReader.close();
bufferedWriter.close();
}
}
设备之间数据的传输
package com.qianfeng.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Demo3 {
public static void main(String[] args) throws IOException {
/*
* 设备之间数据的传输:
* 设备分成输入源和输出源
* 输入源:给内存提供数据的设备
* 输出源:从内存接收数据的设备
*
* 输入源:键盘
* 输出源:控制台
*
* 输入源:键盘
* 输出源:文件
*
* 输入源:文件
* 输出源:控制台
*
* 输入源:文件
* 输出源:文件
*
*/
//创建
//将键盘作为输入源
BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(System.in));
//将文件作为输入源
BufferedReader bufferedReader2 = new BufferedReader(new FileReader("src/com/qianfeng/test/Demo1.java"));
//将文件作为输出源
BufferedWriter bufferedWriter1 = new BufferedWriter(new FileWriter("temp.txt"));
//将控制台作为输出源
BufferedWriter bufferedWriter2 = new BufferedWriter(new OutputStreamWriter(System.out));
//读写
// * 输入源:键盘
// * 输出源:控制台
String data = null;
// while((data =bufferedReader1.readLine())!=null){
// bufferedWriter2.write(data);
// bufferedWriter2.newLine();
// bufferedWriter2.flush();
// }
// * 输入源:键盘
// * 输出源:文件
// while((data =bufferedReader1.readLine())!=null){
// bufferedWriter1.write(data);
// bufferedWriter1.newLine();
// bufferedWriter1.flush();
// }
// * 输入源:文件
// * 输出源:控制台
// while((data =bufferedReader2.readLine())!=null){
// bufferedWriter2.write(data);
// bufferedWriter2.newLine();
// bufferedWriter2.flush();
// }
// * 输入源:文件
// * 输出源:文件
while((data =bufferedReader2.readLine())!=null){
bufferedWriter1.write(data);
bufferedWriter1.newLine();
bufferedWriter1.flush();
}
//资源关闭
bufferedReader1.close();
bufferedReader2.close();
bufferedWriter1.close();
bufferedWriter2.close();
}
}
更换输入源、输出源
package com.qianfeng.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
public class Demo4 {
public static void main(String[] args) throws IOException {
/*
* 更换输入源、输出源
* 注意:这里是临时更换,只能在当前程序中使用更换后的输入输出源,如果在其它的程序中会自动变回原来的键盘/控制台。
*
* 实例:从键盘到控制台 更换成 从文件到文件
*/
//更换输入源--从键盘到文件
System.setIn(new FileInputStream("src/com/qianfeng/test/Demo1.java"));
//更换输出源--从控制台到文件
System.setOut(new PrintStream("temp2.txt"));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
String data = null;
while((data=bufferedReader.readLine())!=null){
bufferedWriter.write(data);
bufferedWriter.newLine();
bufferedWriter.flush();
}
bufferedReader.close();
bufferedWriter.close();
}
}