FilterInputStream(过滤输入流)是处理流的一种,它包含其他一些输入流,将这些流用作其基本数据源,可以直接传输数据或提供一些额外的功能。 FilterOutputStream是过滤输出流的所有类的超类。这些流位于已存在的输出流(基础 输出流)之上,它们将已存在的输出流作为其基本数据接收器,但可能直接传输数据或提供一些额外的功能。 下面介绍一下它们的一些实现类。
BufferedInputStream与BufferedOutputStream BufferedInputStream:使用缓存区读取字节数据 BufferedOutputStream:使用缓存区将字节数据输出 public static void test1()throws Exception{ File file = new File("e:/2.mp4"); InputStream inputStream = new FileInputStream(file); OutputStream outputStream = new FileOutputStream(new File("e:/test2.txt")); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); byte[] b = new byte[1024]; while(bufferedInputStream.read(b) != -1){ bufferedOutputStream.write(b); } }使用缓存流可有效提高程序运行效率。
DataInputStream与DataOutputStream DataInputStream与DataOutputStream:用于读取和输出基本数据类型 public static void test()throws Exception{ File file = new File("e:/data.txt"); FileInputStream inputStream = new FileInputStream(file); FileOutputStream outputStream = new FileOutputStream(file); byte[] b = "1234587".getBytes(); DataOutputStream dataOutputStream = new DataOutputStream(outputStream); //dataOutputStream.write(b); //dataOutputStream.writeBoolean(true); //dataOutputStream.writeChar('d'); dataOutputStream.writeUTF("肯建电视"); DataInputStream dataInputStream = new DataInputStream(inputStream); System.out.println(dataInputStream.readShort()); //System.out.println(dataInputStream.readUTF()); inputStream.close(); outputStream.flush(); outputStream.close(); dataInputStream.close(); dataOutputStream.close(); } PushbackInputStream PushbackInputStream 为另一个输入流添加性能,即“推回 (push back)”或“取消读取 (unread)”一个字节的能力。 public static void test()throws Exception{ byte[] b = "abcdefggfdgert".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(b); PushbackInputStream pushbackInputStream = new PushbackInputStream(byteArrayInputStream); int n; while((n = pushbackInputStream.read()) != -1){ System.out.println((char)n); if(n == 'c'){ pushbackInputStream.unread('5'); } if(n == '5'){ pushbackInputStream.unread('7'); } } byteArrayInputStream.close(); pushbackInputStream.close(); }源码: https://github.com/wolf521/demo/tree/master/src/main/java/com/example/demo/io