您的位置:首页 > 其它

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

2014-08-10 14:18 393 查看
package day06;

import java.io.*;

/*

* 1、

* 源:键盘录入

* 目的:控制台

*

* 2、需求:把键盘录入的数据存储到指定的文件中

* 源:键盘

* 目的:文件

*

* 3、需求:把文件中的数据打印到控制台

* 源:文件

* 目的:控制台

*

* 流操作的基本规律:

* 1、明确源和目的

* 源:输入流 InputStream Reader

* 目的:输出流
OutputStream Writer

* 2、明确操作的数据是否是纯文本

* 是:字符流

* 不是:字节流

* 3、当体系明确后,再明确要使用哪个具体的对象

* 通过设备来进行区分:

* 源设备:内存、硬盘、键盘

* 目的设备:内存、硬盘、控制台

*

* 需求分析demo:

* 1、将一个文件中的数据存储到另一个文件中(复制文件)

* 源:因为是源所以使用读取流 InputStream
writer

* 是不是操作文本文件

* 是:选择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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: