简言
回归字符流以及字节流时写的案例,使用字节流复制图片,使用字符流复制文本。缓冲流的底层也是用字节流或者字符流读写文件的,它本身并没有读写文件的能力,采用的是装饰器模式。在本文中就没有在写案例了。
代码
package com.hy.IOStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
/**
* @author 谢英亮
* @date 2018年1月5日 上午8:59:25
* @Description: 图片以及文本复制
*/
public class Cope {
public static void main(String[] args) throws IOException {
}
/**
* 字节流实现图片复制
*
* @throws FileNotFoundException
* @throws IOException
*/
private static void imgCope() throws FileNotFoundException, IOException {
InputStream is = new FileInputStream("src/com/hy/IOStream/mm.jpg");
OutputStream os = new FileOutputStream("src/com/hy/IOStream/mm2.jpg");
byte[] b = new byte[is.available()];
is.read(b, 0, b.length);
os.write(b);
os.flush();
os.close();
is.close();
}
/**
* 字符流实现文本复制
*
* @throws FileNotFoundException
* @throws IOException
*/
private static void textCope() throws FileNotFoundException, IOException {
Reader rd = new FileReader("src/com/hy/IOStream/text1.txt");
Writer wt = new FileWriter("src/com/hy/IOStream/text2.txt");
char[] cbuf = new char[1024];
int len = 0;
while ((len = rd.read(cbuf, 0, 1024)) != -1) {
String str = new String(cbuf, 0, len);
System.out.print(str);
wt.write(cbuf, 0, len);
}
wt.flush();
wt.close();
rd.close();
}
}