import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /* 输出字节流 --------| OutputStream 所有输出字节流的基类 抽象类 ------------| FileOutputStream 向文件 输出数据 的输出字节流 ------------| Bufferedoutputstream 缓冲输出字节流 BufferedOutputStream出现的目的是为了提高写数据的效率。 内部也是维护了一个8kb的字节数组而已。 使用BufferedOutputStream的步骤: 1. 找到目标文件 2. 建立数据的输出通道 BufferedOutputStream 要注意的细节 1. 使用BufferedOutStream写数据的时候,它的write方法是是先把数据写到它内部维护的字节数组中。 2. 使用BufferedOutStream写数据的时候,它的write方法是是先把数据写到它内部维护的字节数组中,如果需要把数据真正的写到硬盘上面,需要 调用flush方法或者是close方法、 或者是内部维护的字节数组已经填满数据的时候。 */ public class Demo2 { public static void main(String[] args) throws IOException { //找到目标文件 File file = new File("F:\a.txt"); //建立数据的输出通道 FileOutputStream fileOutputStream = new FileOutputStream(file); //建立缓冲输出字节流对象 BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream); //把数据写出 bufferedOutputStream.write("hello world".getBytes()); //把缓冲数组中内部的数据写到硬盘上面。 //bufferedOutputStream.flush(); bufferedOutputStream.close(); } }
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* 练习: 使用缓冲输入输出字节流拷贝一个图片。 */ public class CopyImage { public static void main(String[] args) throws IOException { //找到目标文件 File inFile = new File("F:\美女\1.jpg"); File outFile = new File("E:\1.jpg"); //建立数据输入输出通道 FileInputStream fileInputStream = new FileInputStream(inFile); FileOutputStream fileOutputStream = new FileOutputStream(outFile); //建立缓冲输入输出流 BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream); //边读边写 int content = 0; // int length = bufferedInputStream.read(buf); 如果传入了缓冲数组,内容是存储到缓冲数组中,返回值是存储到缓冲数组中的字节个数。 while((content = bufferedInputStream.read())!=-1){ // 如果使用read方法没有传入缓冲数组,那么返回值是读取到的内容。 bufferedOutputStream.write(content); // bufferedOutputStream.flush(); } //关闭资源 bufferedInputStream.close(); bufferedOutputStream.close(); } }