1、OutputStream是输出字节流的超类。
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { File file = new File("E:\\IO流\\java\\1.txt"); FileOutputStream f = new FileOutputStream(file, true);// 加true后可以实现续写功能 String str = "\r\n" + "nihao";// 换行 f.write(str.getBytes()); f.write("你好".getBytes()); f.write(8); f.close();//释放输出流的资源占用 } }
2、字节缓冲输出流BufferedOutputStream:
write()方法所写的数据并不是直接写入到外设,而是先存放到缓冲区中,积累到一定程度再写到外设,这样可以提高系统效率。但有的时候缓冲区不满就需要写到外设上,需要调用flush()方法。
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class BufferedOutputStreamDemo { public static void main(String[] args) throws IOException { File file = new File("E:\\IO流\\java\\123.txt"); FileOutputStream f = new FileOutputStream(file, true);// 加true后可以实现续写功能 BufferedOutputStream bos = new BufferedOutputStream(f); bos.write("你好".getBytes()); bos.close(); } }
效率测量:
使用缓冲流:
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class BufferedOutputStreamDemo { public static void main(String[] args) throws IOException { File file = new File("E:\\IO流\\java\\123.txt"); FileOutputStream f = new FileOutputStream(file, true);// 加true后可以实现续写功能 BufferedOutputStream bos = new BufferedOutputStream(f); long startTime = System.currentTimeMillis(); for(int i=1;i<=1000;i++) bos.write("你好".getBytes()); long endTime = System.currentTimeMillis(); System.out.println("执行此程序用了" + (endTime - startTime) + "毫秒。"); bos.close(); } }
未使用缓冲流:
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class BufferedOutputStreamDemo { public static void main(String[] args) throws IOException { File file = new File("E:\\IO流\\java\\123.txt"); FileOutputStream f = new FileOutputStream(file, true);// 加true后可以实现续写功能 long startTime = System.currentTimeMillis(); for (int i = 1; i <= 1000; i++) f.write("你好".getBytes()); long endTime = System.currentTimeMillis(); System.out.println("执行此程序用了" + (endTime - startTime) + "毫秒。"); f.close(); } }