黑马程序员技术交流社区

标题: IO流的总结 [打印本页]

作者: 何创    时间: 2012-10-23 23:45
标题: IO流的总结
IO流知识总结:
IO流的概念:
   首先IO流用来处理设备之间的数据传输,是Java对数据的操作是通过流的方式,在使用IO流的时候需要带入IO包。
IO流的分类:
按操作数据分为两种:字节流与字符流。
按流向分为:输入流,输出流
字节流的基类是:InputStream OutputStream
字符流的基类:Reader Writer
一些IO流的规律:
InputStream的子类FileInputStream
Reader的子类FileReader
InputStream OutputStream,,  Reader  Writer。这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。后缀代表它的父类,而前缀代表它的功能。
例如:Fileinputstream Fileoutputstream  它们是操作文件的流。
再使用IO流的时候需要注意以下三个步骤; 1 导入IO包中的类进行 2 进行IO异常处理 3
finally中对流进行关闭
字符流操作;
FileWriter fw = new FileWriter(Test.txt);
fw.write(text);
fw.close();
对字符流异常的捕获处理:
FileWriter fw = null;
try{
fw = new FileWriter("Test.txt");
fw.write("text");
}
catch (IOException e){
System.out.println(e.toString());
}
finally{
If(fw!=null)
try{
fw.close();
}
catch (IOException e){
System.out.println(e.toString());
}
}
字符流的缓冲区:
BufferedWriter  BufferedReader
字符流缓冲区的意义和注意事项:
1 缓冲区的出现提高了对数据的读写效率
2缓冲区要结合流才可以使用
3在流的基础上对流的功能进行了增强
字节流操作;
这个和字符流大致相同,只是在这里用的是InputStream OutputStream
字节流缓冲区:BufferedInputStream
在字节流和字符流之间可以进行转换。
转换流:InputStreamReader    和  ,OutputStreamWriter
因为字节流和字符的异常捕获以及使用方法,基本是用一个道理,需要注意的就是它们之间的不同。
标准输入输出流 :
System类中的字段:inout
它们各代表了系统标准的输入和输出设备。
默认输入设备是键盘,输出设备是显示器。
System.in的类型是InputStream.
System.out的类型是PrintStreamOutputStream的子类FilterOutputStream 的子类.
标准输入输出流示例:
:获取键盘录入数据,然后将数据流向显示器,那么显示器就是目的地。
通过System类的setInsetOut方法对默认设备进行改变。
System.setIn(new FileInputStream(1.txt));//将源改成文件1.txt
System.setOut(new FileOutputStream(2.txt));//将目的改成文件2.txt
因为是字节流处理的是文本数据,可以转换成字符流,操作更方便。
BfferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw =  new BufferedWriter(new OutputStreamWriter(System.out));
IO包中的其他类:
1 管道流     PipedInputStreamPipedOutputStream
2 打印流   PrintWriterPrintStream
3序列流    SequenceInputStream
4 操作对象  ObjectInputStreamObjectOutputStream
流的基本总结:
流是用来处理数据的。
处理数据时,一定要先明确数据源,与数据目的地(数据汇)。
数据源可以是文件,可以是键盘。
数据目的地可以是文件、显示器或者其他设备。
而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理.转换处理等。


作者: 给生活加点料    时间: 2012-10-23 23:57
这可得拿走。 资源啊。  谢谢
作者: 何创    时间: 2012-10-24 12:24
给生活加点料 发表于 2012-10-23 23:57
这可得拿走。 资源啊。  谢谢

呵呵,互相帮助,互相学习:)。
作者: 王小闲7    时间: 2012-10-25 10:02
向文件里写内容后要调用flush()方法将缓冲区里的内容清空,也就是全部写到文件




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2