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
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"));
}
}
面向对象
流操作的基本规律:最痛苦的就是流对象有很多,不知道该用那一个。
通过明确来完成。
(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) 重新分配“标准”输出流。 |
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"));
}
}
相关文章推荐
- 黑马程序员 Java面向对象——IO流 总结应用(打印流)
- 黑马程序员--Java面向对象——IO流 总结应用(打印流)
- JAVA高级应用之序列化与反序列化与IO流总结
- java编程之——IO流应用总结
- 黑马程序员 Java基础知识总结-IO流(应用总结)
- 黑马程序员_java的面向对象(对第七课继承..抽象类..接口及fianl应用总结)
- 黑马程序员_java面向对象(对第五课面向对象..封装..构造..this应用总结)
- java、IO流总结及应用
- 【java】IO流学习总结
- Java基础学习总结(6)——面向对象
- 黑马程序员--IO流File类总结--java
- Java IO流学习总结(一)
- Rhyme/Java 常用IO流总结
- 黑马程序员—java面向对象总结(2)—面向对象封装特性
- JAVA基础学习--IO流总结<一>
- javaday52_IO流_打印流PrintStream和序列流SequenceInputStream
- java基础学习_面向对象(上)02_day07总结
- Core Java第六章知识点总结——面向对象
- java IO流总结梳理
- java_IO流_学习总结