zoukankan      html  css  js  c++  java
  • java 流

    1 流

      在 Java API 中,可以从其中读入一个字节序列的对象称做输入流,而可以向其中写入一
    个字节序列的对象称做输出流。这些字节序列的来源地和目的地可以是文件,而且通常都是
    文件,但是也可以是网络连接,甚至是内存块。抽象类 InputStream 和 OutputStream 构
    成了输入 / 输出(I/O)类层次结构的基础。
    因为面向字节的流不便于处理以 Unicode 形式存储的信息(回忆一下,Unicode 中每个
    字符都使用了多个字节来表示),所以从抽象类 Reader 和 Writer 中继承出来了一个专门用
    于处理 Unicode 字符的单独的类层次结构。这些类拥有的读入和写出操作都是基于两字节的
    Unicode 码元的,而不是基于单字节的字符。

    1.1 读写字节

      InputStream 类有一个抽象方法:

      

    1  abstract int read();

     这个方法将读入一个字节,并返回读入的字节,或者在遇到输入源结尾时返回 -1。在设计具体的输入流类时,必须覆盖这个方法以提供适用的功能,例如,在 FileInputStream类中,这个方法将从某个文件中读入一个字节,而 System.in(它是 InputStream 的一个子类的预定义对象)却是从键盘读入信息。

      InputStream 类还有若干个非抽象的方法,它们可以读入一个字节数组,或者跳过大量

    的字节。这些方法都要调用抽象的 read 方法,因此,各个子类都只需覆盖这一个方法。

    与此类似,OutputStream 类定义了下面的抽象方法:

    1  abstract void write(int b);

      它可以向某个输出位置写出一个字节。
    read 和 write 方法在执行时都将阻塞,直至字节确实被读入或写出。这就意味着如果
    流不能被立即访问(通常是因为网络连接忙),那么当前的线程将被阻塞。这使得在这两个方
    法等待指定的流变为可用的这段时间里,其他的线程就有机会去执行有用的工作。
    available 方法使我们可以去检查当前可读入的字节数量,这意味着像下面这样的代码
    片段就不可能被阻塞:

    1 InputStream inputStream = new FileInputStream("D:/test.txt");
    2     int available = inputStream.available();//可读入的字节数量
    3     if(available>0){
    4         byte[] bety = new byte[available];
    5         int read = inputStream.read(bety);
    6         System.out.println(read);
    7         
    8     }

      当你完成对流的读写时,应该通过调用 close 方法来关闭它,这个调用会释放掉十分
    有限的操作系统资源。如果一个应用程序打开了过多的流而没有关闭,那么系统资源将被耗
    尽。关闭一个输出流的同时还会冲刷用于该输出流的缓冲区:所有被临时置于缓冲区中,以
    便用更大的包的形式传递的字符在关闭输出流时都将被送出。特别是,如果不关闭文件,那
    么写出字节的最后一个包可能将永远也得不到传递。当然,我们还可以用 flush 方法来人为
    地冲刷这些输出.

      即使某个流类提供了使用原生的 read 和 write 功能的某些具体方法,应用系统的程序员
    还是很少使用它们,因为大家感兴趣的数据可能包含数字、字符串和对象,而不是原生字节。
    Java 提供了众多从基本的 InputStream 和 OutputStream 类导出的类,这些类使我们
    可以处理那些以常用格式表示的数据,而不只是字节

  • 相关阅读:
    springboot~gradle4.7之后的lombok引用方法
    fzu 2107 Hua Rong Dao(状态压缩)
    jquery 按钮效果 正常、移上、按下
    HDU4550+贪心
    谈mvc开发中gzip压缩的应用
    GET方法传递中文参数乱码解决办法
    游戏开发工具之纹理打包器-3.使用GDI+绘图
    处理机调度
    Adroid学习系列-入门(1)
    Drupal 7.23版本升级笔记
  • 原文地址:https://www.cnblogs.com/wjlwo2ni/p/10551014.html
Copyright © 2011-2022 走看看