输入输入流应用的简单思想,字节流字符流之间的转换,转换时指定编码表的操作

来源:互联网 发布:mysql binlog 编辑:程序博客网 时间:2024/05/20 05:25
package day06;
import java.io.*;
/*
 * 1、
 * 源:键盘录入
 * 目的:控制台
 * 
 * 2、需求:把键盘录入的数据存储到指定的文件中
 * 源:键盘
 * 目的:文件
 * 
 * 3、需求:把文件中的数据打印到控制台
 * 源:文件
 * 目的:控制台
 * 
 * 流操作的基本规律:
 * 1、明确源和目的
 * 源:输入流 InputStream Reader
 * 目的:输出流 OutputStream Writer
 * 2、明确操作的数据是否是纯文本
 * 是:字符流
 * 不是:字节流
 * 3、当体系明确后,再明确要使用哪个具体的对象
 * 通过设备来进行区分:
 * 源设备:内存、硬盘、键盘
 * 目的设备:内存、硬盘、控制台
 * 
 * 需求分析demo:
 * 1、将一个文件中的数据存储到另一个文件中(复制文件)
 * 源:因为是源所以使用读取流 InputStreamwriter
 * 是不是操作文本文件
 * 是:选择Reader
 * 这样体系就明确了
 * 
 * 接下来明确要使用该体系中的哪个对象
 * 明确设备:硬盘  上的一个文件
 * Reader体系中可以操作文件的对象   FileReader
 * 
 * 是否需要提高效率:
 * 是:加入Reader体系中的缓冲区   BufferedReader
 * 
 * FileReader fr=new FileReader("c:\\demo.txt");
 * BufferedReader buff=new BufferedReader(fr);
 * 
 * 目的:OutputStream   Writer
 * 是否是纯文本:
 * 是:writer
 * 设备:硬盘   一个文件
 * Writer 体系中可以操作文件的对象FileWriter
 * 
 * 是否需要提高效率:
 * 是:加入Reader体系中的缓冲区   BufferedWriter
 * 
 * FileWriter fw=new FileWriter("c:\\demo_copy.txt");
 * BufferedWriter buff=new BufferedWriter(fw);
 * 
 * 2、需求:将键盘录入的数据保存到一个文件中
 * 源:InputStream    Reader
 * 是不是纯文本?    是:Reader
 * 设备:键盘 对应的对象是System.in
 * 选择的是Reader   System.in的对象是字节流
 * 为了操作键盘文本数据方便,将字节流转成字符流按照字符串操作是最方便的
 * 所以既然明确了Reader   那么就将System.in转换成Reader
 * 使用Reader体系中转换流 InputStreamReader 
 * 
 * InputStreamReader isr=new InputStreamReader(System.in);
 * 
 * 需要提高效率吗?   需要:使用BufferedReader
 * BufferedReader bff=new BufferedReader(isr);
 * 
 * 目的:Outputstream    Writer
 * 是否是纯文本?    是:Writer
 * 设备:硬盘   一个文件    使用: FileWriter
 * FileWriter fw=new FileWriter("c:\\demo.txt");
 * 需要提高效率吗?  需要
 * BufferedWriter buff=new BufferedWriter(fw);
 * ------------------------------------------------------------------
 * 3、要把录入的数据按照指定编码表(utf-8),将数据存储到文件中
 * 
 * 目的:OutputStream   Writer
 * 是否是纯文本?   是:Writer
 * 设备:硬盘,一个文件,使用FileWriter
 * 但是FileWriter使用的是默认编码表即GBK
 * 
 * 存储时,希望加入指定的编码表UTF-8,而指定的编码表只有转换流可以指定
 * 所以要使用的对象是OutputStreamWriter
 * 而该转换流对象要接收一个可以操作文件的字节输出流即:FileOutputStream
 *    OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("c:\\a.txt"),"UTF-8");
 * 需要提高效率?  需要   BufferedWriter buff=new BufferedWiter(osw);
 * */
import day02.Sop;
class TransStreamDemo {


public static void main(String[] args) throws IOException{
/*
InputStream in=System.in;
InputStreamReader isr=new InputStreamReader(in);
BufferedReader buff=new BufferedReader(isr);

OutputStream out=System.out;
OutputStreamWriter osw=new OutputStreamWriter(out);
BufferedWriter buffer=new BufferedWriter(osw);
*/
//以上注释代码的简写格式
//源:键盘录入 目的:控制台
//BufferedReader buff=new BufferedReader(new InputStreamReader((System.in)));
//BufferedWriter buffer=new BufferedWriter(new OutputStreamWriter(System.out));
//源:键盘录入 目的:文件
//BufferedReader buff=new BufferedReader(new InputStreamReader((System.in)));
//BufferedWriter buffer=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\\out.txt")));

//源:文件 目的:控制台
//BufferedReader buff=new BufferedReader(new InputStreamReader(new FileInputStream("c:\\out.txt")));
//BufferedWriter buffer=new BufferedWriter(new OutputStreamWriter(System.out));

//源:键盘录入 目的:文件(指定编码表)

//BufferedReader buff=new BufferedReader(new InputStreamReader(System.in));
//BufferedWriter buffer=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\\acb.txt"),"UTF-8"));

//源:文件 目的:控制台(指定编码表)

BufferedReader buff=new BufferedReader(new InputStreamReader(new FileInputStream("c:\\acb.txt"),"UTF-8"));
BufferedWriter buffer=new BufferedWriter(new OutputStreamWriter(System.out));
String len=null;
while((len=buff.readLine())!=null){
if("over".equals(len)){
break;
}
buffer.write(len.toUpperCase());
buffer.newLine();
buffer.flush();
}
buff.close();
}
}
0 0
原创粉丝点击