进行流操作要按步骤分析,附三个小例子

来源:互联网 发布:linux squid 透明代理 编辑:程序博客网 时间:2024/06/05 21:54


如何操作流对象,通过三个明确来完成。

1,明确源和目的。
源:输入流。InputStream  Reader
目的:输出流。OutputStream  Writer


2,操作的数据是否是纯文本。
是:字符流。
不是:字节流。


3,当体系明确后,在明确要使用哪个具体的对象。
通过设备来进行区分:
源设备:内存,硬盘。键盘
目的设备:内存,硬盘,控制台。


例子一、

import java.io.*;/* * 需求:将一个图片文件中数据存储到另一个文件中。 * 源:使用读取流。InputStream 或 Reader 是不是操作文本文件?不是!这时就可以选择InputStream体系明确设备:硬盘InputStream体系中可以操作文件的对象是 FileInputStream是否需要提高效率?是!BufferedInputStream目的:OutputStream或Writer是否是纯文本?不是!选择OutputStream体系设备:硬盘OutputStream体系中可以操作文件的对象FileOutputStream是否需要提高效率:是!BufferedOutputStream*/class Test1{public static void main(String[] a)throws IOException{BufferedInputStream br=new BufferedInputStream(new FileInputStream("D:\\javafile\\day19\\src\\a.jpg"));BufferedOutputStream bw=new BufferedOutputStream(new FileOutputStream("D:\\javafile\\day19\\src\\b.jpg"));int s=0;while((s=br.read())!=-1){bw.write(s);bw.flush();}br.close();bw.close();}}

例子二、

import java.io.*;/* *练习:将一个文本数据打印在控制台上源:InputStream或Reader是不是纯文本?是!Reader设备:硬盘需要提高效率吗?需要!BufferedReader目的:OutputStream或Writer是否是纯文本?是!Writer设备:控制台需要提高效率吗?需要。BufferedWriter bufw = new BufferedWriter(fw);*/ class Test2 { public static void main(String[] a)throws IOException { BufferedReader br=new BufferedReader(new FileReader("D:\\javafile\\day19\\src\\Test1.java")); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out)); String s =null; while((s=br.readLine())!=null) { bw.write(s); bw.newLine(); bw.flush(); } br.close(); bw.close(); } }

例子三、

/* * 通过重新分配“标准”输入流和输出流来复制文件 * */ import java.io.*; class Test3 { public static void main(String[] a)throws IOException{ System.setIn(new FileInputStream("D:\\javafile\\day19\\src\\b.jpg"));//定义标准输入流为源文件 System.setOut(new PrintStream("D:\\javafile\\day19\\src\\c.jpg"));//定义标准输出流为目标文件BufferedInputStream br=new BufferedInputStream(System.in);BufferedOutputStream bw=new BufferedOutputStream(System.out);int s=0;while((s=br.read())!=-1){bw.write(s);bw.flush();}br.close();bw.close();} }

原创粉丝点击