Java IO流 -> 处理流 -> 转换流
-
转换流是套接在一个字节流上将其转换成字符流,完成字节数据到字符数据的转换。
-
InInputStreamReader需要套接一个InputStream流;
-
OutputStreamWriter需要套接一个OutputStream流;
-
转换流在构造时,可以指定其编码集。如:
InputStreamReader in = new InputStreamReader(System.in, "UTF-8");
import java.io.*;
import java.net.URL;
/**
* 测试转换流InputStreamReader&OutputStreamWriter
*/
public class TestCovert {
public static void main(String[] args) {
//readSystemIn();
downloadResource("https://qq.com","qq.txt","gb2312");
}
/**
* 从键盘读取数据,输出到控制台
*/
public static void readSystemIn(){
try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));){
for(String src = null; (src = in.readLine()) != null && !"exit".equals(src);){
out.append(src);
out.newLine();
out.flush();
}
}catch (IOException e){
e.printStackTrace();
}
}
/**
* 从网页抓取网页源数据,写入本地目标文件
*/
public static void downloadResource(String urlPath, String destFile, String charset){
try(BufferedReader in = new BufferedReader(new InputStreamReader(new URL(urlPath).openStream(),charset) );
//BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));){
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFile)));){
for(String src = null; (src = in.readLine()) != null;){
out.append(src);
out.newLine();
out.flush();
}
}catch (IOException e){
e.printStackTrace();
}
}
}