您的位置:首页 > 其它

IO流 改变标准输入输出设备

2016-01-23 16:23 253 查看
package com.yyq;
import java.io.*;
/*
* 转换流--------指定码表
* 需求: 想将一个文件的数据打印在控制台上
* 源:文件
* 目的:控制台
* 流操作的基本规律:
*     最痛苦的就是流的对象有很多,不知道该用哪一个
*
*     三个明确来完成: (1)明确 源和目的
*                         源: 输入流  (InputStream Reader)
*                       目的:输出流(OutputStream Writer)
*                 (2)明确操作的数据是否是纯文本
*                          是纯文本: 字符流
*                      不是纯文本:字节流
*                 (3)当体系明确后,再明确要使用那个具体的对象
设备进行区分:
*                         源设备:内存,硬盘,键盘
*                         内存,硬件,控制台
*                 是否需要提高效率: 是,需要加入Reader体系中的缓冲区
*   1.将一个文本文件中的数据存储到 另一个文件中,复制文件
*       源:InputStream Reader
*        是文本文件,这是就可以选择Reader
*        体系明确
*        接下来要明确要使用该体系中的那个对象,明确设备: 硬盘上的一个文件
*        Reader体系中可以操作文件的对象是FileReader
*     目的:OutputStream Writer
*           目的是否是纯文本 writer
*      设备: 硬盘,一个文件
*        writer 体系中可以操作文件的对象FileWriter
*      (循环读写,定义缓冲区)
*/
/*
* 2.将键盘录入的数据保存到一个文件中
*   源: InputStrem Reader
*   是不是纯文本:(键盘是纯文本 ? 是 Reader)
*   设备:键盘(对应的对象是 System.in )
*   不是选择Reader吗 ?System.in对应的是不是字节流吗?
*   为了操作键盘的文本数据方便,转成字符流,按照字符串操作是最方便的
*   所以既然明确了Reader ,那么就将system.in 转换成Reader
*   用了Reader体系中的转换流 InputStreamReader
*       需要提高效率吗? 需要的话使用BufferedReader
*   目的: OutputStream Writer
*   是否是纯文本? 是字符流writer
*   设备:硬盘一个文件: 使用FileWriter
*   需要提高效率吗? BufferedWriter
*   ********************************
*
*   扩展:想要把录入的数据按照指定的编码表(utf8),将数据存入到文件中
*   转换流的由来就是可以指定编码表,(转换流存在的意义,就是能指定编码表)
*   但是存储是,需要加入指定的编码表,而指定的编码表只有转换流可以指定
*   该流对象需要接收一个字节输出流,而且还可以操作文件的字节输出流FileOutputStream
*
*   转换流: 什么时候使用? 字符和字节之间的桥梁,通常涉及字符编码转换时使用到
*/
public class Test {
public static void main(String[] args) throws IOException {
System.setOut(new PrintStream("haha.txt"));
BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("1.txt"),"gbk"));
System.out.println(bufr.readLine());
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line = bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: