Java中的Java.io.InputStream类

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

Java中的Java.io.InputStream类

InputStream类是所有io类的超类,即表示输入的字节流。它代表输入的字节流。定义InputStream的子类的应用程序必须提供方法,返回下一个输入字节。
调用reset()方法将流重新定位到最近标记的位置。

public abstract class InputStream
   extends Object
      implements Closeable

构造函数:

  • InputStream():单个构造函数

方法:

  • mark():Java.io.InputStream.mark(int arg)标记输入流的当前位置。它设置readlimit,即标记位置变为无效之前可以读取的最大字节数。
    句法 :

    public void mark(int arg)
     参数:
    arg:指定输入流的读取限制的整数
    返回:  
    void
  • read():java.io.InputStream.read()从输入流中读取下一个字节的数据。值字节的返回范围是0到255.如果由于流的末尾已到达而没有可用的字节,则返回值-1。
    句法 :

    public abstract int read()
     参数:
    ------
    返回: 
    否则读取下一个数据,即-1到达文件结束时。
    异常: 
    - >   IOException:如果发生I / O错误。
  • close():java.io.InputStream.close()关闭输入流并将与此流关联的系统资源释放到垃圾收集器。
    句法 :

    public void close()
     参数:
    ------
    返回: 
    空虚
    异常: 
    - >   IOException:如果发生I / O错误。
  • read():Java.io.InputStream.read(byte [] arg)从输入流读取arg.length的字节数到缓冲区数组arg。read()方法读取的字节以int形式返回。如果len为零,则不读取字节并返回0; 否则,尝试读取至少一个字节。
    句法 :

    public int read(byte [] arg)
     参数:
    arg:要读取的字节数的数组
    返回: 
     读取字节数并返回到其他缓冲区,-1即达到文件结束时。
    异常: 
    - >   IOException:如果发生I / O错误。
    - >   NullPointerException:如果arg为null。
  • reset():由mark()方法调用Java.io.InputStream.reset()。它将输入流重新定位到标记位置。
    句法 :

    public void reset()
     参数:
    ----
    返回: 
    空虚
    异常: 
    - >   IOException:如果发生I / O错误。
  • markSupported():Java.io.InputStream.markSupported() 方法测试此输入流是否支持标记和重置方法。InputStream的markSupported方法默认返回false。
    句法 :

    public boolean markSupported()
     参数:
    -------
    返回:  
    如果输入流支持mark()和reset()方法,则返回 true,否则返回 false
  • skip():Java.io.InputStream.skip(long arg) 跳过并放弃输入流中的arg字节。
    句法 :

    公开长跳过(long arg)
     参数:
    arg:不。的字节被跳过
    返回: 
    跳过字节。
    异常: 
    - >   IOException:如果发生I / O错误。

解释InputStream类方法的Java程序:

// Java program illustrating the working of InputStream method
// mark(), read(), skip()
// markSupported(), close(), reset()
import java.io.*;

public class NewClass
{
    public static void main(String[] args) throws Exception
    {
        InputStream geek = null;
        try {

            geek = new FileInputStream("ABC.txt");

            // read() method : reading and printing Characters
            // one by one
            System.out.println("Char : "+(char)geek.read());
            System.out.println("Char : "+(char)geek.read());
            System.out.println("Char : "+(char)geek.read());

            // mark() : read limiing the 'geek' input stream
            geek.mark(0);

            // skip() : it results in redaing of 'e' in G'e'eeks
            geek.skip(1);
            System.out.println("skip() method comes to play");
            System.out.println("mark() method comes to play");
            System.out.println("Char : "+(char)geek.read());
            System.out.println("Char : "+(char)geek.read());
            System.out.println("Char : "+(char)geek.read());

            boolean check = geek.markSupported();
            if (geek.markSupported())
            {
                // reset() method : repositioning the stram to
                // marked positions.
                geek.reset();
                System.out.println("reset() invoked");
                System.out.println("Char : "+(char)geek.read());
                System.out.println("Char : "+(char)geek.read());
            }
            else
                System.out.println("reset() method not supported.");


            System.out.println("geek.markSupported() supported"+
                              " reset() : "+check);

        }
        catch(Exception excpt)
        {
            // in case of I/O error
            excpt.printStackTrace();
        }
        finally
        {
            // releasing the resources back to the
            // GarbageCollector when closes
            if (geek!=null)
            {
                // Use of close() : closing the file
                // and releasing resources
                geek.close();
            }
        }
    }
}

注意:
此代码不会在联机IDE上运行,因为此处不存在suc文件。
你可以在你的系统上运行这个代码来检查工作。代码中使用的ABC.txt文件有

HelloGeeks

输出:

Char : H
Char : e
Char : l
skip() method comes to play
mark() method comes to play
Char : o
Char : G
Char : e
reset() method not supported.
geek.markSupported() supported reset() : false
  •   本文标题:Java中的Java.io.InputStream类 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/4313.html

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读