首页 > 代码库 > 流操作的基本规律

流操作的基本规律

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、ios培训、.Net培训</a>、期待与您
交流!------

流操作的基本规律:
因为流对象有很多,不知道要操作哪一个

通过三个明确来完成。
1,明确源和目的
源:输入流。InputStream Reader
目的:输出流。OutputStream Writer
2,操作的数据是否纯文本。
是:字符流
不是:字节流
3,当体系明确后再明确要使用那个具体的对象。
通过设备来区分:
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
通过一个事例来详细说明三个明确:
需求:将一个文件的数据存储到另一个文件中,即复制文件;

分析:
源:因为是源所以使用读取流 InputStream Reader
* 是不是操作文本文件?
* 是!这时可以使用Reader,这样体系就明确了

* 接下来明确要使用该体系中的哪个对象。
* 明确设备:硬盘上的一个文件
* Reader体系中可以操作文件的对象是 FileReader

* 是否需要提高效率?是!加入Reader体系中的缓冲区 BufferedReader
* FileReader fr=new FileReader("a.txt");
* BufferedReader bufr=new BufferedReader(fr);

* 目的:因为是目的所以使用写入流 OutputStream Writer
* 是否是纯文本?
* 是!Writer
* 设备:硬盘,一个文件
* Writer体系中可以操作文件的对象是 FileWriter
* 是否要提高效率?
* 是!加入Writer体系中的缓冲区 BufferedWriter

* FileWriter fw=new FileWriter("a.txt");
* BufferedWriter bufw=new BufferedWriter(fw);

到这里代码也就基本完成了 如下:
import java.io.*;
public class transStreamDemo2 
{
public static void main(String[] args)throws IOException
{
BufferedReader bufr=new BufferedReader(new InputStreamReader(new FileInputStream("f:\\zk-Dome\\ArrayListTest2.java")));
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\yu.txt")));
String line=null;
while((line=bufr.readLine())!=null)
{
if(line.equals("over"))
break;
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.close();
}
}

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

* 源:因为是源所以使用读取流 InputStream Reader
* 是否操作纯文本?
* 是!使用Reader体系

* 这样体现明确了,接下来明确使用体系中的哪个对象。
* 设备:键盘对应的对象是System.in

* 不是选择Reader吗?System.in对应的不是字节流吗?
* 为了操作键盘的文本数据方便,转成字符流按照字符流操作是最方便的
* 既然明确了Reader,那么就将System.in转换成Reader
* 用到了Reader体系中的转换流,InputStreamReader

* InputStreamReader isr=new InputStreamReader(System.in);
* 需要提高效率吗?
* 需要!BufferedReader
* BufferedReader bufr=new BufferedReader(isr);

代码:
import java.io.*;
public class transStreamDemo2
{
public static void main(String[] agrs) throws IOException
{
jianpanInput();
}
public static void jianpanInput()throws IOException
{
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\tt.txt")));
String line=null;
while((line=bufr.readLine())!=null)
{
if(line.equals("over"))
break;
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.close();
}
}

运行结果:
键盘输入内容:
ni hao 
haha
bo
over

目标文件内容:
ni hao 
haha
bo
简单功能完成!

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、ios培训、.Net培训</a>、期待与您
交流!------

流操作的基本规律