您的位置:首页 > 职场人生

黑马程序员_IO流

2013-04-18 20:36 295 查看
------- android培训java培训、期待与您交流! ----------

IO流

输入和输出功能的实现。主要分为input(输入)和output(输出)。
输入流指向JAVA程序内,亦即read操作。
输出流指向JAVA程序外,亦即write操作。

常用的流有字节流、字符流。

字节流操作的是字节、字符流操作的是字符。

字节流能操作所有类型的文件,而字符流只能操作字符组成的文件。

字符流

字符输入流 Reader
常用的子类
FileReader
高效包装类
BufferedReader
字符输出流 Writer

常用的子类
FileWriter
高效包装类
BufferedWriter

字节流

字节输入流 InputStream
常用的子类
FileInputStream
高效包装类
BufferedInputStream

字节输出流 OutputStream
常用的子类
FileOutputStream
高效包装类
BufferedOutputStream

转换流

转换流是字符流和字节流的桥梁,实现二者之间的转换。

用于实现字节流到字符流的转换流

InputStreamReader

用于实现字符流到字节流的转换流

OutputStreamWriter

流的常用方法

输入流:
FileInputStream fis = new FileInputStream(srcFile);
byte[] buf = new byte[1024];
while(fis.read(buf))!=1){
写的操作
}
fis.close();


以上演示的是输入流的读操作。

输出流
FileOutputStream fos = new FileOutputStream(descFile);
byte[] buf=new byte[1024];
while(fis.read()!=-1){
fos.write(buf);

}
fos.close();


高效包装流:
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);

byte[] buf = new byte[1024];
while(bis.read())!=-1){
bos.write(buf);
}
bos.close();


转换流:

//此处用字符流对象bis接收了是字节流的对象System.in
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//此处用字符流对象包裹了是字节流的对象System.out
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

char[] chs = new char[1024];
int len=0;
while((len=br.read(chs))!=-1){
bw.write(chs,0,len);
bw.flush();
}
bw.close();
br.close();

注意事项

1、如果写入单个字符,记得需要使用flush()来刷新缓冲区,否则数据不会被写入文件。

2、close()方法包含了flush()方法,所以关闭流时,会把缓冲区中现存的数据刷新。

3、高效包装流是采用装饰设计模式作成的流,它的代码中不会直接完成读、写等基本操作功能,而是采用多态调用相应的流的方法来完成功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: