zoukankan      html  css  js  c++  java
  • JDK中个别类的介绍IO读写(java.io.*)

    一直以来对于java.io包中的Stream、writer/reader、Buffered*等较为混沌,现在理一理它们之间的关系。主要依据字符、字节字符:人可以看。字节:机器的编码,用于传输或读写硬盘上的数据。

    字节的读写(Stream)

    FileInputStream用于获得输入字节,可以读取诸如图像之类的原始字节流。

    FileInputStream fileInputStream=new FileInputStream(File file);
    int read(byte[] b);//从输入流中将最多b.length个字节数据读入b
    int read(byte[] b, int off, int len)://最多len字节数据读入b,位置是从b的off处开始
    int skip(long n);//从输入流中跳过n字节。

    FileOutputStream:文件输出流,将数据写入File。

    FileOutputStream(File);
    void write(byte[] b);
    void write(byte[] b, int off, int len);


    字符的读写

    FileReader用于读取字符文件。

    FileReader fileReader=new FileReader(File file);

    FileWriter用于写入字符文件。

    FileWriter fileWriter=new FileWriter(File file);


    字节《=》字符转换

    InputStreamReader:字节流=》字符流,可使用指定的Charset读取字节并解码为字符。

    InputStreamReader(InputStream);
    InputStreamReader(InputStream,Charset);
    int read(char[],int offset,int length);

    OutputStreamWriter:字符流=》字节流,可使用指定的Charset将要写入流中的字符编码成字节。

    OutputStreamWriter(OutputStream);
    OutputStreamWriter(OutputStream out,Chaset);
    void write(char[] cbuf,int off,int len);


    Reader/Writer的包装-提升性能

    BufferedReader 从字符输入流中读取文本,缓冲各个字符,高效读取。api建议用它包装开销较高的FileReader和InputStreamReader。

    BufferedReader(Reader in);
    BufferedReader bf1=new BufferedReader(new FileReader(""));
    BufferedReader bf2=new BufferedReader(new InputStreamReader());
    int read(char[] cbuf,int off, int len);
    String readLine();

    BufferedWriter将文本写入字符输出流,缓冲各个字符。可用于包装开销很高的FileWriter,OutputStreamWriter。

    BufferedWriter(Writer);
    BufferedWriter(new FileWriter(""));
    BufferedWriter(new OutputStreamWriter());
    void write(char[] cbuf,int off, int len);
    void write(String, int off, int len);

    以上是依据 机器<->人 这样的流程来分析。下面看下类图:

           


               

    OutputStream -> FileOutputStream -> BufferedOutputStream
    InputStream -> FileInputStream -> BufferedInputStream
    Writer -> FileWriter ->  BufferedWriter
    Reader -> FileReader -> BufferedReader

    Stream:字节流操作的超类,Reader/Writer:字符流操作的超类。BufferedInputStream/BufferedOutputStream/BufferedWriter/BufferedReader在上述IO操作上增加了缓冲,可以有效地提高文件I/O性能。

  • 相关阅读:
    学生宿舍水电管理系统 产品需求评审(用户故事)
    nyoj 14-会场安排问题 (贪心)
    好看的鼠标hover效果
    JavaScript-三种弹窗方式
    博客园美化夜间模式
    js写个小时钟
    js获取时间,循环执行任务,延迟执行任务
    Bzoj1103 [POI2007]大都市meg
    POJ2155 Matrix
    POJ3625 Building Roads
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982061.html
Copyright © 2011-2022 走看看