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));
//BufferedWriter buffer=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("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();
}
}
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();
}
}