/* 字节输入流方法*/
java.io.FileInputStream;
/* 字节输入流一次读取多个字节的方法: int read(byte[] b);从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中, 明确两件事: 1、方法byte[]的作用 起到缓冲的作用,存储每次读取到的多个字节 数组的长度一—把定义为1024(1kb)的整数倍 2、方法的返回值int时什么? 每次读取的有效字节个数 String类的的构造方法 String(byte[] bytes);把字节数组转换为字符串 String(byte[] bytesn int offset,int Length);把字节数组的一部分转换为字符串,offset,数组的起始索引,Length,转换的字节个数; */
public static void main(String[] args) throws IOException {
//1、创建FileInputStream对象,构造方法中绑定要读取的数据源
FileInputStream fis=new FileInputStream("IOAndProperties\\1.txt");
//2、使用read方法读取文件,带有参数,读取到文件的末尾返回-1
//int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中
byte[] b=new byte[1024];
int read1 = fis.read(b);//读取指定大小数量的文件,并将其存储在缓冲区数组中
System.out.println(read1);//输出打印字节个数
//3、使用循环来打印字节流
while((len=fis.read(byte))!=-1){
System.out.println(new String(byte));//利用String的构造函数来
}
/*System.out.println(Arrays.toString(b));
System.out.println(new String(b));*/
//读取方法read(),无参数读取
//使用FileInputStream对象中的方法read(),读取文件
//int read()读取文件中的一个字节并返回,读取到文件的末尾返回-1
// int r = fis.read();
// System.out.println(r);
/*
发现每次只能读取一个字节,,要想把文件中的字节全部读出来,需要进行多次的读操作,
可以使用循环,因为限制条件,当读取到最后一个字节时,返回值是-1
布尔表达式;(read=fis.read())!=-1
1、fis.read()读取一个字节
2、read=fis.read(),读取到的字节赋值给变量
3、(read=fis.read())!=-1判断变量read是否不等于-1
*/
/* int read=0;
while ((read=fis.read())!=-1){
System.out.print((char) read);
}*/
//释放资源
fis.close();
}
3、字节读取流的原理介绍
- //创建FileInputStream对象,构造方法中绑定要读取的数据源,创建一个流对象,指向文件,
- 利用read()方法进行读取,不带参数的read()方法,表示一次读取到一个字节,并返回给int类型变量;带有字节数组b[]的参数方法表示先创建一个字节缓冲数组,一个读取数组长度的字节流文件,并存储在字节数组b[]中,
- 利用循环读取的方法,当读取到文件最终的位置时,返回值为-1;
- 释放流资源,close()方法;