Java FilterInputStream read()方法

java.io.FilterInputStream.read(byte[] b, int off, int len) 用于从输入流最多读取len个字节的数据到一个字节数组中。

1 语法

public int read(byte[] b, int off, int len)

2 参数

b:目标缓冲区。

off:目标缓冲区中的起始偏移量。

len:读取的最大字节数。

3 返回值

返回读取到缓冲区的总字节数;如果没有更多数据要读取,则返回-1。

4 示例 

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * java.io.FilterInputStream.read(byte[] b, int off, int len)方法的例子
 */
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;

public class Demo {
    public static void main(String[] args) throws Exception {
        InputStream is = null;
        FilterInputStream fis = null;
        int i = 0;
        char c;
        byte[] buffer = new byte[6];

        try {
            // create input streams
            is = new FileInputStream("d://test.txt");
            fis = new BufferedInputStream(is);

            // returns number of bytes read to buffer
            i = fis.read(buffer, 2,4);

            // prints
            System.out.println("Number of bytes read: "+i);

            // for each byte in buffer
            for(byte b:buffer) {

                // converts byte to character
                c = (char)b;

                // if byte is null
                if(b == 0)
                    c = '-';
                // prints
                System.out.println("Char read from buffer b: "+c);
            }

        } catch(IOException e) {
            // if any I/O error occurs
            e.printStackTrace();
        } finally {
            // releases any system resources associated with the stream
            if(is!=null)
                is.close();
            if(fis!=null)
                fis.close();
        }
    }
}

假设test.txt内容如下:

ABCDEF

输出结果为:

Number of bytes read: 4
Char read from buffer b: -
Char read from buffer b: -
Char read from buffer b: A
Char read from buffer b: B
Char read from buffer b: C
Char read from buffer b: D

热门文章

优秀文章