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();
}
}
本文介绍了Java中输入输出流的使用,包括从键盘输入到文件输出,以及从文件读取到控制台显示。特别讨论了在数据传输过程中如何指定编码表进行字节流与字符流之间的转换,确保数据正确无误地处理和展示。
713

被折叠的 条评论
为什么被折叠?



