• Tags , ,         
  • 2018-06-06  09:04:16        
  • 40 °C    

    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
     
    转载请保留页面地址:https://www.breakyizhan.com/java/4313.html