IO流

作者: woochen123 | 来源:发表于2017-11-15 11:48 被阅读0次

1.流 stream

java对文本的读和写是通过输入流和输出流来完成的。
输出流:OutputStream

//读写规范
//为了得到正确的变量作用域,在try外声明流变量
FileOutputStream fos = null;
byte[] buf = new byte[2048];
   try {
            //在try块内完成初始化
            fos = new FileOutputStream(file);
       while ((len = is.read(buf)) != -1) {
                fos.write(buf, 0, len);
            }
            fos.flush();
        } finally {
            try {
                //为了避免空指针异常
                if (fos != null) 
                //释放资源(文件句柄,网络端口,其他资源)
                fos.close();
            } catch (IOException e) {
              //忽略或者记录为日志
            }
        }
//在java7之后引入了“带资源的try”构造,不需要在try声明变量;也不需要finally子句,java会对所有AutoCloseable对象自动调用close(),所以
 try {
            //在try块内完成初始化
            FileOutputStream fos = new FileOutputStream(file);
            fos.flush();
        }catch(IOException ex){
             System.err.println(ex.getMessage());
        }

输入流:InputStream

InputStream is = new FileInputStream();
byte[] b = new byte[1024];
int read = is.read(b);

//补充方法
public void mark(int readAheadLimit);  //给输入流设置标记
public void reset() throws IOException;  //将输入流重置到标记处,可以从标记处开始读取
public boolean markSupport();  //判断当前输入流流是否支持标记

2.缓冲流(BufferedStream)

  • 输出缓冲流:BufferedOutputStream
    在开始写入数据时,首先将数据写入缓冲区,到达一定大小后,再一次性将数据写入到原始输出流中(减少了数据量的传输大小,从而提高了写的速度)
public BufferedInputStream(InputStream inputStram);
public BufferedInputStream(InputStream inputStram,int bufferSize);
  • 输入缓冲流:BufferedInputStream
    在开始读取数据时(从本地磁盘读取数据),首先将数据读到缓冲区,到达一定的大小后,再一次性将数据放入原始输入流中(从底层流中读取几百字节的速度几乎和读取1字节的速度相同,所以可以显著提升性能;但是由于网络传输速度的瓶颈,在网络连接的场景下效果不会十分明显)
public BufferedOutputStream(OutputStream outputStram);
public BufferedOutputStream(OutputStream outputStram,int bufferSize);

3.过滤器输出流(PrintStram)

public PrintStram(OutputStram outputStrem);
public PrintStram(OutputStram outputStrem,boolean autoFlush);

注意:
1.PrintStram会掩盖所有的异常,但是不会抛出
2.在不同系统(window,mac)展示结果可能不尽相同
3.应该尽量减少PrintStram的使用

4.数据流(DataStream)

可以用二进制格式读/写java的基本数据类型和字符串。(主要用于两个不同的Java程序之间交换数据)
数据输入流:DataInputStram
数据输出流:DataOutputStream

5.阅读器(reader),书写器(writer)

串链到原始的输入/输出流上,使程序可以对字符进行操作(原始流是对字节操作),同时可以处理字符的编码
InputStreamReader:将字符输入流按照指定的编码(没有指定就使用默认的编码)转化为字节流,然后放入原始的输入流中

  public InputStreamReader(InputStream in, Charset charset) { }

OutputStreamWritter:将字节输出流按照指定的编码(没有指定就使用默认的编码)转化为字符流,然后放入原始的输出流中

  public OutputStreamWriter(OutputStream out, Charset cs) { }

6.过滤器阅读器(BufferedReader),过滤器书写器(BufferedWritter)

BufferedReader:常用方法readLine() //读入一行
BufferedWritter:常用方法newLine() //写入一行

7.PrintWritter

用于取代PrintStram类,它能正确的处理多字节字符集和国际化文本。

相关文章

  • java基础-day20-IO流和StringBuffer

    IO流和StringBuffer 1. IO流 1.1 IO流概述 1.2 IO流分类 1.3 文件操作输入输出字...

  • Java之IO流详解

    title: Java之IO流详解tags: Java IO流categories: Java IO流 大多数应用...

  • 15_IO流

    IO流介绍 IO流是一个流水模型:IO理解成水管,把数据理解成水流 IO流的分类:按照流的方向分为:输入流、输出流...

  • IO流

    一、IO流 1.1 IO的概述 IO流介绍 IO:输入/输出(Input/Output) 流:是一种抽象概念,是对...

  • java io 流

    java io 流 io 流总览 io 流主要提供四个接口 InputStream: 输入字节流 OutputSt...

  • Java IO流(一)

    IO(Input Output)流的概述 下面给出IO流的基本概述,这样可以对IO流有一个宏观上的基本了解。 IO...

  • IO流

    一、IO流的概述: 二、IO流的分类: 三、字节缓冲流: 四、字符缓冲流: 五、转换流(把字节流转换为字符流): ...

  • IO流

    IO流的使用 今天咱们来说一下JAVA中最常用的数据处理的流 IO 流,说到IO啊,玩DOTA的小伙伴们就有声音...

  • IO流

    大家好,我是IT修真院深圳分院java第4期学员,一枚正直善良的java程序员。今天给大家分享一下,Java简单的...

  • IO流

    Input Output 输入流和输出流,字节流和字符流

网友评论

      本文标题:IO流

      本文链接:https://www.haomeiwen.com/subject/uarhzttx.html