zoukankan      html  css  js  c++  java
  • java流1----InputStream、OutputStream、Reader、Writer

    字节流和字符流

         顾名思义,字节流就是操作的是字节,字符流操作的就是字符。其中字节流又可以分为字节输入流(InputStream)和字节输出流(OutputStream)。同样的字符流也可以分为字符输入流(Reader)和字符输出流(Writer)。字节输入流的用法和字符输入流的用法类似,字节输出流的用法和字符输出流的用法非常类似,最明显的区别是字节流是对字节的操作,字符流是对字符的操作。

         ①InputStream和Reader

    通过查看API文档可以发现InputStream和Reader的核心方法分别是:

    InputStream:

     

    常见子类: ByteArrayInputStream, FileInputStreamFilterInputStream, InputStream, ObjectInputStream,StringBufferInputStream

     1 import java.io.*;
     2 
     3 public class InputStreamTest {
     4     public static void main(String[] args) throws IOException {
     5         InputStream is = new FileInputStream("f:/InputStream.txt");
     6 
     7         byte[] b = new byte[32];
     8         int len = 0;
     9         while ((len = is.read(b)) != -1) {
    10             is.read(b, 0, len);
    11             System.out.println(b);
    12         }
    13 
    14     }
    15 }
    InputStream方法举例

     

    Reader:

    常见子类:BufferedReader, LineNumberReader, CharArrayReader, InputStreamReader, FileReader, FilterReader, PushbackReader, PipedReader, StringReader, Writer

     1 import java.io.*;
     2 
     3 public class ReaderTest {
     4     public static void main(String[] args) throws IOException {
     5         Reader is = new FileReader("f:/InputStream.txt");
     6 
     7         char[] b = new char[32];
     8         int len = 0;
     9         while ((len = is.read(b)) != -1) {
    10             is.read(b, 0, len);
    11             System.out.println(b);
    12         }
    13 
    14     }
    15 }
    Reader方法举例

    如果运行上述两个例子的话会发现输出结果不一样,InputStream举例中输出的不是文件里面的内容,这是因为InputStream读取的是一个个二进制码
                 

                  2.OutputStream和Writer

    OutputStream和Writer的核心方法是“写”,就是将数据写入到输出流里面去。分别看下他们的API上面的方法:

    OutputStream:

    常见子类:ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream

    Writer:

    常见子类:BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

    应为两者都是类似的,这里就举只一个Writer的例子

     1 import java.io.*;
     2 
     3 public class WriterTest {
     4     public static void main(String[] args) throws IOException {
     5         Writer wr = new FileWriter("f:/Writer.txt");
     6 
     7         String s = new String("我是一个大公鸡");
     8         wr.write("我
    ");
     9         wr.write(s, 0, s.length());
    10         wr.flush();
    11         wr.close();
    12 
    13     }
    14 }
    Writer例子

    记得写完之后一定要刷新缓冲,并且关闭流。

    我不知道这些有没有说清楚,如果没有说清楚或者错误的地方希望大家不要给我脸,尽情地指出来,不胜感激

    下一篇会详细写一下,那个各种流中的常见子类。

  • 相关阅读:
    旅行计划
    两只塔姆沃斯牛
    迷宫
    异或序列
    异或之和
    素数个数
    SAC E#1
    [JSOI2010]Group 部落划分 Group
    [USACO12FEB]附近的牛Nearby Cows
    [HNOI2008]Cards
  • 原文地址:https://www.cnblogs.com/Hadley-pu/p/Stream_1.html
Copyright © 2011-2022 走看看