zoukankan      html  css  js  c++  java
  • Java IO 3 : 字节流 和 字符流

    InputStream 和 Reader:
      InputStream 和 Reader 是所有输入流的抽象基类 , 本身并不能创建实例执行输入,但是他们是所有输入流的模板,他们的方法是所有输入流都可以使用的方法
    
    InputStream:
      int read()   从输入流中读取单个字节,返回读取的字节数据(字节属猪可以直接转换成int类型)
      int read(byte[] b)  从输入流中读取b.length个字节数据,并将其存储在字节数组中,返回实际读取的字节数
      int read(byte[]b , int off , in len)  从输入流中读取最多len个字节的数据,并将其存储在数组b中,并不是从数组起点开始,而是从off位置开始,返回实际读取的字节数。
    
    Reader:
      int read()  从输入流中读取单个字符
      int read(char[] cbuf)  从输入流中读取cbuf.length个字符数据,并将其存储在字符数组中,返回实际读取的字符数
      int read(char[] cbuf , int off , int len)  从输入流中 , 读取len个字符的数据, 将其存储在cbuf字符数组当中,放入数组中时并不是从数组的七点开始, 而是从off位置开始,返回实际读取的字符数
    
    InputStream和Reader 移动记录指针的方法:
      void mark(int readAheadLimit)  在记录指针当前位置记录一个标记(mark)
      boolean markSupported()  判断此输入流是否支持mark()操作,即是否支持标记
      void reset()  将此流的记录指针重新定位到上一次记录标记mark的位置
      long skip(long n)   记录指针向前移动n个字节/字符
    InputStream和Reader
    OutputStream和Writer:相应的方法
      void write(int c)  将制定的字节/字符输出到输出流中,c既可以代表字节,也可以代表字符
      void write(byte[]/char[] buf)   将字节数组/字符数组中的数据传输到指定流中
      void write(byte[]/char[] buf , int off , int len)  将字节数组/字符数组中从off开始,长度为len的字节/字符输出到输出流中
    Writer 可以用字符串来代替字符数组,还有String对象作为参数。
      void write(String str)  将str字符串里包含的字符输出到指定输出流中
      void write(String str , int off , int len)  将Str字符串里从off开始,长度为len的字符输出到指定的输出流中
    OutputStream和Writer

    操作流的步骤:

      1.建立流的管道,需要一个明确的File数据源
      2.进行字节/字符的读/写的操作
      3.操作完毕,关闭流

    public class File02 {
    
        public static void main(String[] args) throws IOException {
            //创建一个输入流管道
            FileInputStream fis = new FileInputStream(new File("D://demo/a.txt"));
            //创建一个长度为1024的水桶
            byte[] b = new byte[1024];
            //用户保存实际读取的字节数
            int hasRead = 0;
            FileOutputStream out = new FileOutputStream(new File("D://demo/acopy.txt"));
            while((hasRead = fis.read(b)) != -1) {
                //取出水桶中的水, 然后做需要的操作
                out.write(b , 0 , hasRead);
            }
            //关闭流
            out.close();
            fis.close();
        }
    }
    View Code
    Java输入输出流体系中常用的流分类
    分类 字节输入流 字节输出流 字符输入流 字符输出流
    抽象基类 InputStream OutputStream Reader Writer
    访问文件 FileInputStream FileOutputStream FileReader FileWriter
    访问数组 BiteArrayInputStream BiteArrayOutputStream CharArrayReader CharArrayWriter
    访问管道 PipedInputStream PipedOutputStream PipedReader PipedWriter
    访问字符串     StringReader StringWriter
    缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
    转换流     InputStreamReader OutputStreamWriter
    对象流 ObjectInputStream ObjectOutputStream    
    抽象基类 FilterInputStream FilterOutputStream FilterReader FilterWriter
    打印流   PrintStream   PrintWriter
    推回输入流 PushbackInputStream   PushbackReader  
    特殊流 DataInputStream DataOutputStream    
    温故而知新
  • 相关阅读:
    搭建redis sentinel 和 cluster
    ASP.NET WebForm Ajax请求Handler的经验
    ASP.NET WebForm Identity使用
    Github Pages 无法调用 node_modules 文件夹的解决方案
    聊聊手机之--小米6
    boostrap-非常好用但是容易让人忽略的地方【7】:list-unstyled list-inline
    boostrap-非常好用但是容易让人忽略的地方【6】:role属性
    monaco-editor使用
    关于oppo和vivo这两年强势崛起的反思
    Build 2017(简体中文视频)
  • 原文地址:https://www.cnblogs.com/Uzai/p/9646895.html
Copyright © 2011-2022 走看看