字节输出流
InputStream抽象类是表示字节输出流的所有类的超类 可以读取字节信息到内存中 它定义了自己输入流的基本共性功能方法
InputStream是隶属于java.io包下
public void close():关闭此输入流并释放资源与此流相关联的任何系统资源 public abstract int read():从输入流读取数据的下一个字节 public int read(byte[] b):从输入流中读取一些字节数 并将它们存储到字节数组b中
FileIntputStream介绍
FileIntputStream:文件字节输入流 隶属于java.io包下
作用:把硬盘文件中的数据 读取到内存中使用
构造方法:
FileInputStream(String name) FileInputStream(File file) 参数:读取文件的数据源 String name:文件的路径 File file:文件
构造方法的作用
1.会创建一个FileInputStream对象
2.会把FileInputStream对象指定方法中要读取的文件
读取数据的原理(硬盘-->内存)
java程序-->JVM-->OS-->OS读取数据的方法-->读取文件
字节输入流的使用步骤(重点)
1.创建FileInputStream对象 构造方法中绑定要读取的数据源
2.使用FileInputStream对象中的方法read 读取文件
3.释放资源
代码:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
public static void main(String[] args) throws Exception { //创建FileIntputStream对象 FileInputStream fis = new FileInputStream("E:\\file\\a.txt"); //使用read方法 int read = fis.read(); System.out.println(read);//a-->97 //使用read方法 read = fis.read(); System.out.println(read);//b-->98 //使用read方法 read = fis.read(); System.out.println(read);//-1 fis.close(); }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
a.txt
运行结果:
可以看到读取都是一些重复的代码 我们可以使用循环将没有必要的代码写入到循环中
代码:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
public static void main(String[] args) throws Exception { //创建FileIntputStream对象 FileInputStream fis = new FileInputStream("E:\\file\\a.txt"); //定义一个值用于接收读取的返回值 int len=0; //使用while循环 因为我们并不能确定循环的次数 所有我们可以使用while循环 while ((len=fis.read())!=-1){//每当我们接收到的返回值和-1进行判断 如果是-1那就停止运行 System.out.println(len); } //关闭流 fis.close(); }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
运行结果:
这样做可以避免写出-1
布尔表达式(len=fis.read())!=-1
1.fis.read():读取一个字节
2.len=fis.read():把读取到的字节赋值给变量len
3.(len=fis.read)!=-1:判断变量len是否不等于-1
如果不想要看数字 想看字符 可以进行强转
代码:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
public static void main(String[] args) throws Exception { //创建FileIntputStream对象 FileInputStream fis = new FileInputStream("E:\\file\\a.txt"); //定义一个值用于接收读取的返回值 int len=0; //使用while循环 因为我们并不能确定循环的次数 所有我们可以使用while循环 while ((len=fis.read())!=-1){//每当我们接收到的返回值和-1进行判断 如果是-1那就停止运行 System.out.println((char) len); } //关闭流 fis.close(); }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
运行结果:
运行原理: