流的操作规律:
1.明确源和目的
源:InputSream Reader
目的:OutputStream Writer
2.明确数据是否是纯文本数据
源:是纯文本 Reader
否:InputSream
目的:是纯文本 Writer
否:OutputStream
3.明确具体的设备
源设备:
硬盘:File
键盘:System.in
内存:数组
网络: Socket流
目的设备:
硬盘:File
控制台:System.in
内存:数组
网络:Socket流
4.是否需要其他额外功能
i.是否需要高效(缓冲区)
是,加Buffer
ii.转换
demo1:复制一个文本文件:
1、明确和目的:
源:InputStream Reader
目的:OutputStream Writer
2、是否纯文本
是
源:Reader
目的:Writer
3、明确具体设备。
源:
硬盘:File
目的:
硬盘:File
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");
4、需要额外功能吗?
需要,需要高效
BufferedReader bufr = new BufferedReader(new FileReader("a.txt")));
BufferedWrieter bufw = new BufferedWrieter(new FileWriter("b.txt"));
demo2:读取键盘录入信息,并写入到一个文件中
1、明确和目的:
2、是否纯文本
是
源:Reader
目的:Writer
3、明确设备
源:
键盘:System.in
目的:
硬盘:File
InputStream in = System.in;
FileWriter fw = new FileWriter("b.txt");
4、需要额外功能吗?
需要。转换。
将字节流转换成字符流。因为明确的源是Reader,这样操作文本数据更便捷
InputStreamReader isr = new InputStreamReader(System.in);
FileWriter fw = new FileWriter("b.txt");
还需要功能吗?
需要:嗯
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWrieter bufw = new BufferedWrieter(new FileWriter("b.txt"));
demo3:讲一个文本文件数据显示在控制台上
1、明确和目的:
源:InputStream Reader
目的:OutputStream Writer
2、是否纯文本
是
源:Reader
目的:Writer
3、明确具体设备。
源:
硬盘:File
目的:
控制台:System.out
FileReader fr = new FileReader("a.txt");
OutputStream os = System.out;
4、需要额外功能吗?
需要,转换
FileReader fr = new FileReader("a.txt");
OutputStreamWriter osw = new OutputStreamWriter(System.out);
需要高效
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWrieter bufw = new BufferedWrieter(new OutputStreamWriter(System.out));
demo4:读取键盘录入数据,显示在控制台上
InputStream is = System.in;
OutputStream out = System.out;
InputStreamReader isr = new InputstreamReader(System.in);
OutputStreamWriter osw new OutputStreamWriter(System.out);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWrieter(new OutputStreamWriter(System.out));
demo5:讲一个中文字符串数据按照指定的编码表写入到一个文本文件中
1、目的。OutputStream Writer
2、是纯文本,Writer
3、设备:硬盘File
FileWriter fw = new FileWriter("a.txt");
fw.write("你好");
注意:
既然需求中已经明确了指定编码表的动作,那就不可以使用FileWriter,因为FileWriter内部使用默认的本地编码表
只能使用其父类。OutputStreamWriter.
OutputStreamWriter接受一个字节输出流对象,既然是操作文件,那么该对象应该是FileOutputStream
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"),charsetName);
什么时候使用转换流呢?
1、源或者目的对应的设备室字节流,但是操作的却是文本数据,可以使用转换作为桥梁,提高对文本操作的便捷。
2、一旦操作文本涉及到具体的自定编码表时,必须使用转换流
1.明确源和目的
源:InputSream Reader
目的:OutputStream Writer
2.明确数据是否是纯文本数据
源:是纯文本 Reader
否:InputSream
目的:是纯文本 Writer
否:OutputStream
3.明确具体的设备
源设备:
硬盘:File
键盘:System.in
内存:数组
网络: Socket流
目的设备:
硬盘:File
控制台:System.in
内存:数组
网络:Socket流
4.是否需要其他额外功能
i.是否需要高效(缓冲区)
是,加Buffer
ii.转换
demo1:复制一个文本文件:
1、明确和目的:
源:InputStream Reader
目的:OutputStream Writer
2、是否纯文本
是
源:Reader
目的:Writer
3、明确具体设备。
源:
硬盘:File
目的:
硬盘:File
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");
4、需要额外功能吗?
需要,需要高效
BufferedReader bufr = new BufferedReader(new FileReader("a.txt")));
BufferedWrieter bufw = new BufferedWrieter(new FileWriter("b.txt"));
demo2:读取键盘录入信息,并写入到一个文件中
1、明确和目的:
2、是否纯文本
是
源:Reader
目的:Writer
3、明确设备
源:
键盘:System.in
目的:
硬盘:File
InputStream in = System.in;
FileWriter fw = new FileWriter("b.txt");
4、需要额外功能吗?
需要。转换。
将字节流转换成字符流。因为明确的源是Reader,这样操作文本数据更便捷
InputStreamReader isr = new InputStreamReader(System.in);
FileWriter fw = new FileWriter("b.txt");
还需要功能吗?
需要:嗯
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWrieter bufw = new BufferedWrieter(new FileWriter("b.txt"));
demo3:讲一个文本文件数据显示在控制台上
1、明确和目的:
源:InputStream Reader
目的:OutputStream Writer
2、是否纯文本
是
源:Reader
目的:Writer
3、明确具体设备。
源:
硬盘:File
目的:
控制台:System.out
FileReader fr = new FileReader("a.txt");
OutputStream os = System.out;
4、需要额外功能吗?
需要,转换
FileReader fr = new FileReader("a.txt");
OutputStreamWriter osw = new OutputStreamWriter(System.out);
需要高效
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWrieter bufw = new BufferedWrieter(new OutputStreamWriter(System.out));
demo4:读取键盘录入数据,显示在控制台上
InputStream is = System.in;
OutputStream out = System.out;
InputStreamReader isr = new InputstreamReader(System.in);
OutputStreamWriter osw new OutputStreamWriter(System.out);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWrieter(new OutputStreamWriter(System.out));
demo5:讲一个中文字符串数据按照指定的编码表写入到一个文本文件中
1、目的。OutputStream Writer
2、是纯文本,Writer
3、设备:硬盘File
FileWriter fw = new FileWriter("a.txt");
fw.write("你好");
注意:
既然需求中已经明确了指定编码表的动作,那就不可以使用FileWriter,因为FileWriter内部使用默认的本地编码表
只能使用其父类。OutputStreamWriter.
OutputStreamWriter接受一个字节输出流对象,既然是操作文件,那么该对象应该是FileOutputStream
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"),charsetName);
什么时候使用转换流呢?
1、源或者目的对应的设备室字节流,但是操作的却是文本数据,可以使用转换作为桥梁,提高对文本操作的便捷。
2、一旦操作文本涉及到具体的自定编码表时,必须使用转换流