版权声明: https://blog.csdn.net/weixin_40072979/article/details/83650896
InputStreamReader / OutputStreamWriter :是字节流与字符流之间的桥梁,能将字节流转换过程字符流,并且能为字节流指定字符集,可处理一个个的字符。
我们先使用System.in 和 System.out 来进行输入和输出操作,并且使用上字符缓冲流,为了我们识别的方便,我们将字节流转换成字符流,使用转换流
package com.jianshun;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
*转换流:InputStreamReader OutputStreamWriter
*1:以字符流的形式操作字节流(纯文本的)
*2:指定字符集
*/
public class ConvertTest {
public static void main(String[] args){
//操作System.in 和 System.out
try (BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));){
//循环获取键盘的输入(exit推出),输出此内容
String msg = "";
while(!msg.equals("exit")){
msg = read.readLine();//循环读取
writer.write(msg);//循环写出
writer.newLine();
writer.flush();//强制刷新
}
} catch (IOException e) {
System.out.println("操作异常");
}
}
}
你会发现输入和输出是一样的。
有时候文件字符编码与我们项目不同会出现乱码,我们可以使用字符集,读取和写出都是用字符集,这样更加保险
我们以读取百度首页的网页代码为例,同样都使用转换流变成字符流方便我们辨认。
package com.jianshun;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
/**
* 转换流:InputStreamReader OutputStreamWriter 1:以字符流的形式操作字节流(纯文本的) 2:指定字符集
*/
public class ConvertTest02 {
public static void main(String[] args) {
// 操作网络流
try (BufferedReader is = //使用缓冲字符流
new BufferedReader(
new InputStreamReader(
new URL("http://www.baidu.com").openStream(), "UTF-8"));
BufferedWriter wr =
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("baidu.html"),"UTF-8"));) {
// 3,操作(读取)
String line = null;
while((line=is.readLine())!= null){
wr.write(line);
wr.newLine();
}
wr.flush();
} catch (IOException e) {
System.out.println("操作异常");
}
}
public void test() {
// 操作网络流
try (InputStreamReader is = new InputStreamReader(new URL("http://www.baidu.com").openStream(), "UTF-8");) {
// 3,操作(读取)
int temp;
while ((temp = is.read()) != -1) {
System.out.print((char) temp);
}
} catch (IOException e) {
System.out.println("操作异常");
}
}
}