-------------------------------中关村黑马程序员---------------------------------------------
IO 输入输出流操作的规律
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
输入输出的流对象有很多,如何明确该用哪一个具体的流对象了。
通过三个明确来完成。
1,明确源和目的。
源:输入流。InputStream Reader
目的:输出流。OutputStream Writer。
2,操作的数据是否是纯文本。
是:字符流。
不是:字节流。
3,当体系明确后,在明确要使用哪个具体的对象。
通过设备来进行区分:
源设备:内存,硬盘。键盘
目的设备:内存,硬盘,控制台。
例如有一下四个需求
1把键盘录入的数据打印在控制台上。
2 把键盘录入的数据存储打印到一个文件中。
3将一个文件的数据打印在控制台上。
4将一个文件中数据存储复制到另一个文件中
通过以上四个需求:结合上面的三个明确。不难发现集中的规律,
用代码简单表示是
1. 源是键盘输入流 目的是键盘输出流
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
2. 源是字符高效输入流 目的是字符高效输出流
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("FileName")));
3. 源是 高效字符输入流 目的是高效字符输出流
BufferedReader bufr = new BufferedReader(new InputStreamReader( new FileInputStream("FileName")));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
4. 源高效是高效字符数入流 目的是高效字符输出流
BufferedReader bufr = new BufferedReader(new InputStreamReader( new FileInputStream("FileName")));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("FileName")));
1把键盘录入的数据打印在控制台上。
class TransStreamDemo2
{
public static void main(String[] args) throws IOException
{
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
}
}
2 把键盘录入的数据存储打印到一个文件中。
class TransStreamDemo2
{
public static void main(String[] args) throws IOException
{
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter( new FileOutputStream("FileName")));
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
}
}
3将一个文件的数据打印在控制台上。
class TransStreamDemo2
{
public static void main(String[] args) throws IOException
{
BufferedReader bufr =
new BufferedReader(new InputStreamReader( new FileInputStream("FileName")));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
}
}
4,将一个文本文件中数据存储到另一个文件中。复制文件。
源:因为是源,所以使用读取流。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("b.txt");
BufferedWriter bufw = new BufferedWriter(fw);
-------------------------------------------------------------------------------------------------------------------------------
class TransStreamDemo2
{
public static void main(String[] args) throws IOException
{
BufferedReader bufr =
new BufferedReader(new InputStreamReader( new FileInputStream("FileName")));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("FileName")));
String line = null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
}
}