前言:InputStream是一个提供字节输入流的实现类
public abstract class InputStream
extends Object
implements Closeable
这个抽象类是表示输入字节流的所有类的超类。
在进行读取的时候是不会用到系统缓冲区的,也就是说为了防止过多的写入才会提供有写入缓冲区,写入的缓冲区才需要清空处理,所以InputStream不会实现Flushable接口
常用方法
public abstract int read()
throws IOException
从输入流读取数据的下一个字节。 值字节被返回作为int范围0至255 。 如果没有字节可用,因为已经到达流的末尾,则返回值-1 。
public int read(byte[] b)
throws IOException
从输入流读取一些字节数,并将它们存储到缓冲区b 。 实际读取的字节数作为整数返回。 如果没有字节可用,因为已经到达流的末尾,则返回值-1 。
public int read(byte[] b,
int off,
int len)
throws IOException
从输入流读取len字节的数据到一个字节数组。 尝试读取多达len个字节,但可以读取较小的数字。 实际读取的字节数作为整数返回。
如果len为零,则不会读取字节并返回0 ; 否则,尝试读取至少一个字节。 如果没有字节可用,因为流是文件的-1则返回值-1 ; 否则,读取至少一个字节并存储到b 。
public class Test {
public static void main(String[] args) throws IOException {
//定义要进行输出的磁盘完成路径
File file = new File("D:" + File.separator + "test-new.txt");
if (file.exists()) {
//实例化输入流对象
InputStream fileInputStream = new FileInputStream(file);
//开辟一个空间进行数据读取
byte[] bytes = new byte[1024];
//将输入流的内容读取到字节数组之中
fileInputStream.read(bytes);
System.out.println("[结果:"+new String(bytes)+"]");
fileInputStream.close();
}
}
}
出现这样的原因是因为字节数组的空间太大,远超内容空间,因此可以读取输入的长度
public class Test {
public static void main(String[] args) throws IOException {
//定义要进行输出的磁盘完成路径
File file = new File("D:" + File.separator + "test-new.txt");
if (file.exists()) {
//实例化输入流对象
InputStream fileInputStream = new FileInputStream(file);
//开辟一个空间进行数据读取
byte[] bytes = new byte[1024];
//将输入流的内容读取到字节数组之中
int read = fileInputStream.read(bytes);
System.out.println("[结果:"+new String(bytes,0,read)+"]");
fileInputStream.close();
}
}
}
public int available()
throws IOException
返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,可用于判断文件大小。若文件大于5M尽量不要一次性读取