您的位置:首页 > 编程语言 > Java开发

Java面向对象——IO流 总结应用(打印流)

2014-02-27 10:44 253 查看
欢迎光临新长城博客中心



面向对象

流操作的基本规律:最痛苦的就是流对象有很多,不知道该用那一个。

通过明确来完成。

(1)、明确源和目的

源:输入流InputStream Reader

目的:输出流OutputStream Writer

(2)、操作的数据是否是纯文本

是:字符流 Reader Writer

不是:字节流 InputStream OutputStream

(3)、当体系明确后,再明确要使用那个具体的对象

通过设备来进行区分:

源设备:内存 硬盘 键盘

目的设备:内存 硬盘 控制台

/*

需求:将一个文本文件中数据存储到另一个文件中。复制文件

*/

源:因为是源,所以使用读取流。InputStream
Reader

是否是纯文本文件:是,所以使用
Reader。

接下来明确要使用该体系中的那个对象:

明确设备,硬盘,一个文件。

 Reader体系中可以操作文件的是,FileReader。

是否需要提高效率?

BufferedReader

目的:因为是目的,所以使用写入流。OutputStream
Writer

是否是纯文本文件:是,所以使用 Writer。

接下来明确要使用该体系中的那个对象:

明确目的,硬盘,一个文件。

Writer 体系中可以操作文件的是,FileWriter。

是否需要提高效率?需要。BufferedWriter

/*

需求:将键盘录入的数据保存到一个文件中

这个需求中有源和目的都存在,那么分别分析

*/

源:因为是源,所以使用读取流。InputStream
Reader

是否是纯文本文件:是,所以使用 Reader。

接下来明确要使用该体系中的那个对象:

明确设备,键盘。对应的对象是System.in。

 不是选择Reader吗?System.in
对应的不是字节流吗?

为了操作键盘的文字数据方便,字节流可以转换成字符流,按照字符串操作最方便。

既然明确了Reader
就将 System.in 转换成Reader

用到了Reader
体系中的转换流,InputSteamReader

需要提高效率吗?需要,BufferedReader

目的:因为是目的,所以使用写入流。OutputStream
Writer

是否是纯文本文件:是,所以使用 Writer。

接下来明确要使用该体系中的那个对象:

明确目的,硬盘,一个文件。

Writer 体系中可以操作文件的是,FileWriter。
是否需要提高效率?需要。BufferedWriter

扩展

想要把录入的数据按照指定的编码表(UTF-8),将数据存到文件中,使用转换流,里面可以指定编码。

目的:OutputStream
Writer

是否是纯文本?是,Writer

接下来明确要使用该体系中的那个对象:

明确目的,硬盘,一个文件。

Writer 体系中可以操作文件的是,FileWriter。

但是存储时,需要加入指定的编码表,而指定的编码表,只有转换流可以指定。

所以要使用的对象是OutputStreamWriter.

而该转换流对象要接收一个字节输出流。

而且还可以操作文件的字节输出流,FileOutputStream

是否需要提高效率?需要。BufferedWriter

所以,记住,转化暖流什么时候使用,字符和字节之间的桥梁,通常,涉及到字符编码转换时,需要用到转换流。

IO流(改变标准输入输出设备)

System

static void
setIn(InputStream in)


          重新分配“标准”输入流。
static void
setOut(PrintStream out)


          重新分配“标准”输出流。
IO流(异常的日志信息)

import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.PrintStream;
public class Test{

public static void main(String...args)
{

try{

int arr[] =
new int[2];

System.out.println(arr[3]);

}catch(Exceptione){

try{

Date d = new Date();

SimpleDateFormatsdf = new SimpleDateFormat("yyyy年MM月dd日
E HH:mm:ss");

String date = sdf.format(d);

PrintStream ps = new PrintStream("c:\\execption.txt");

ps.println(date);

System.setOut(ps);

}

catch(IOException
ex){

throw new RuntimeException("日志文件创建失败");

}

e.printStackTrace(System.out);

}

}

}

IO流(系统信息)

import java.util.Properties;

import java.io.PrintStream;

import java.io.IOException;

public class Test{

public static void main(String...args) throws IOException{

Properties popr = System.getProperties();

popr.list(new
PrintStream("C:\\1.properties"));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息