流的操作规律:
因为流的类太多,开发时不知道用哪个.
四个明确:
一、明确源和目的
源:Reader、InputStream.
目的:Writer、OutputStream.
二、明确是否是文本文件
是:Reader
Writer
否:InputStream
OutputStream
三、明确设备
源设备:
硬盘:File
键盘:System.in
内存:数组
网络:Socket流
目的设备:
硬盘:File
键盘:System.out
内存:数组
网络:Socket流
四、明确是否需要增加额外功能
1、提高效率(缓冲区)
2、转换
四个例子:
需求1:复制一个文本文件
1、明确源和目的
源:Reader、InputStream.
目的:Writer、OutputStream.
2、明确是否是文本文件
是:
源:Reader、目的:Writer
3、明确设备
File
4、是否需要增加额外功能
需要
需求:2:读取键盘录入信息并写入到一个文件中
1、明确源和目的:
源:Reader、InputStream
目的:Writer、OutputStream
2、明确是否是文本
源:Reader
目的:Writer
3、明确设备:
源:键盘、System.in
目的:文件File
4、是否需要增加额外功能
是,转换,和缓冲区
需求3:将一个文本文件数据显示在控制台上
1、明确源和目的:
源:Reader、InputStream
目的:Writer、OutputStream
2、明确是否是文本
源:Reader
目的:Writer
3、明确设备
源:文件,File
目的:控制台,System.out
4、是否要增加额外功能
转换,和缓冲区
需求4:读取键盘录入数据,显示在控制台上
1、明确源和目的:
源:Reader、InputStream
目的:Writer、OutputStream
2、明确是否是文本
源:Reader
目的:Writer
3、明确设备
源:键盘,System.in
目的:控制台,System.out
4,增加额外功能
转换,和缓冲区
代码演示:
package cn.itcast.iotest.demo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class IoTestDemo {
public static void main(String[] args) throws IOException {
// iotest_1();
// iotest_2();
// iotest_3();
iotest_4();
}
// 需求4:读取键盘录入数据,显示在控制台上
public static void iotest_4() throws IOException {
BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter buw=new BufferedWriter(new OutputStreamWriter(System.out));
String len=null;
while((len=bur.readLine())!=null) {
if(len.equals("over"))
break;
buw.write(len);
buw.newLine();
buw.flush();
}
bur.close();
buw.close();
}
//需求3:将一个文本文件数据显示在控制台上
public static void iotest_3() throws IOException {
/*FileReader fr=new FileReader("demo_1.txt");
OutputStream os=System.out;
OutputStreamWriter osw=new OutputStreamWriter(os);//转换
BufferedReader bur=new BufferedReader(fr);//缓冲区
BufferedWriter buw=new BufferedWriter(osw);//缓冲区
*/
BufferedReader bur=new BufferedReader(new FileReader("demo_2.txt"));
BufferedWriter buw=new BufferedWriter(new OutputStreamWriter(System.out));
String len=null;
while((len=bur.readLine())!=null) {
buw.write(len);
buw.newLine();
buw.flush();
}
bur.close();
buw.close();
}
//需求2:读取键盘录入信息并写入到一个文件中
public static void iotest_2() throws IOException {
/* InputStream in=System.in;
FileWriter fw=new FileWriter("demo_3.txt");
InputStreamReader is=new InputStreamReader(in);//转换
BufferedReader bur=new BufferedReader(is);//缓冲区
BufferedWriter buw=new BufferedWriter(fw);//缓冲区
*/
BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter buw=new BufferedWriter(new FileWriter("demo_3.txt"));
String len=null;
while((len=bur.readLine())!=null) {
if("over".equals(len))
break;
buw.write(len);
buw.newLine();
buw.flush();
}
bur.close();
buw.close();
}
//需求1:复制一个文本文件
public static void iotest_1() throws IOException {
/* FileReader fr=new FileReader("demo_1.txt");
FileWriter fw=new FileWriter("demo_2.txt");
BufferedReader bur=new BufferedReader(fr);
BufferedWriter buw=new BufferedWriter(fw);*/
BufferedReader bur=new BufferedReader(new FileReader("demo_1.txt"));
BufferedWriter buw=new BufferedWriter(new FileWriter("demo_2.txt"));
String len=null;
while((len=bur.readLine())!=null) {
buw.write(len);
buw.newLine();
buw.flush();
}
bur.close();
buw.close();
}
}