zoukankan      html  css  js  c++  java
  • 字节流和字符流

     IO概述

    1.1 什么是IO

    (1)输入input 输出 output ,即流向内存是输入流,流出内存的输出流。

    (2)输入也叫做读取数据,输出也叫做作写 出数据。

    1.2 IO的分类

    数据的流向分为:输入流输出流

    输入流 :把数据从 其他设备 上读取到 内存 中的流。

    输出流 :把数据从 内存 中写出到 其他设备 上的流

    格局数据的类型分为:字节流字符流

    字节流 :以字节为单位,读写数据的流。

    字符流 :以字符为单位,读写数据的流。

    1.3 IO的流向说明图解

     

    1.4 父类

    二、字节流

    2.1 一切皆为字节(一个字节8个二进制位)

    一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一 样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么样的流对象, 层传输的始终为二进制数据

    2.2 字节输出流【OutputStream

    java.io.OutputStream 抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字 节输出流的基本共性功能方法。

    public void close() :关闭此输出流并释放与此流相关联的任何系统资源。

    public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。

    public void write(byte[] b) :将 b.length字节从指定的字节数组写入此输出流。

    public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 offff开始输 出到此输出流。

    public abstract void write(int b) :将指定的字节输出流。

    2.3 FileOutputStream

    构造方法

    public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件。

    public FileOutputStream(String name) 创建文件输出流以指定的名称写入文件。

    当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有这个文件,会创建该文件。如果有这个文 件,会清空这个文件的数据。

    2.4 字节输入流【InputStream

    java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入 流的基本共性功能方法。

    public void close() :关闭此输入流并释放与此流相关联的任何系统资源。

    public abstract int read() 从输入流读取数据的下一个字节。

    public int read(byte[] b) 从输入流中读取一些字节数,并将它们存储到字节数组 b

    三、字符流

    当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为 一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文 件。

    3.1 字符输入流【Reader

    java.io.Reader 抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入 流的基本共性功能方法。

    public void close() :关闭此流并释放与此流相关联的任何系统资源。

    public int read() 从输入流读取一个字符。

    public int read(char[] cbuf) 从输入流中读取一些字符,并将它们存储到字符数组 cbuf

    3.2 FileReader

    java.io.FileReader 类是读取字符文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

    1. 字符编码:字节与字符的对应规则。Windows系统的中文编码默认是GBK编码表。

    idea中UTF-8

    2. 字节缓冲区:一个字节数组,用来临时存储字节数据。

    构造方法

    FileReader(File file) 创建一个新的 FileReader ,给定要读取的File对象。

    FileReader(String fileName) 创建一个新的 FileReader ,给定要读取的文件的名称。

    当你创建一个流对象时,必须传入一个文件路径。类似于FileInputStream 。

    3.3 字符输出流【Writer

    输出流的基本共性功能方法。

    void write(int c) 写入单个字符。

    void write(char[] cbuf) 写入字符数组。

    abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分,offff数组的开始索引,len 写的字符个数。

    void write(String str) 写入字符串。

    void write(String str, int off, int len) 写入字符串的某一部分,offff字符串的开始索引,len写的字符个 数。

    void flush() 刷新该流的缓冲。

    void close() 关闭此流,但要先刷新它。

    3.4 FileWriter

    java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

    构造方法

    FileWriter(File file) 创建一个新的 FileWriter,给定要读取的File对象。

    FileWriter(String fileName) 创建一个新的 FileWriter,给定要读取的文件的名称。

    当你创建一个流对象时,必须传入一个文件路径,类似于FileOutputStream

    关闭和刷新

    因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据 的。如果我们既想写出数据,又想继续使用流,就需要 flush 方法了。

    flush :刷新缓冲区,流对象可以继续使用。

    close :先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

  • 相关阅读:
    分分钟用上C#中的委托和事件
    AutoResetEvent详解
    C#跨线程调用
    多线程编程的注意事项
    C#中WinForm程序退出方法技巧总结
    用c#实现单链表(程序代码已经验证,完全正确)
    event & EventHandler
    Kubernetes理论02
    centos7 日志文件
    CentOS7 FTP安装与配置
  • 原文地址:https://www.cnblogs.com/kali5k/p/13580136.html
Copyright © 2011-2022 走看看