ava.io.InputStream & java.io.FileInputStream ╰半夏微凉° 2021-11-02 13:50 226阅读 0赞 # java.io.InputStream & java.io.FileInputStream # java.io.InputStream,这个抽象类是表示字节输入流的超类,这个抽象类的共性的方法有: <table> <thead> <tr> <th>方法</th> <th>作用</th> </tr> </thead> <tbody> <tr> <td>int read()</td> <td>从输入流中读取数据的下一个字节,并返回,到末尾就返回-1</td> </tr> <tr> <td>int read(byte[] b)</td> <td>从输入流中读取一定数量的字节,并将其存储在缓冲区数组b之中</td> </tr> <tr> <td>void close()</td> <td>关闭输入流,并释放与输入流相关的系统资源</td> </tr> </tbody> </table> java.io.FileInputStream extends InputStream **构造方法** <table> <thead> <tr> <th style="text-align:left;">构造方法</th> <th style="text-align:left;">作用</th> </tr> </thead> <tbody> <tr> <td style="text-align:left;">FileInputStream(String name)</td> <td style="text-align:left;">创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件</td> </tr> <tr> <td style="text-align:left;">FileInputStream(File file)</td> <td style="text-align:left;">创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件</td> </tr> </tbody> </table> **参数**:String name(文件路径)、File file(文件对象) ## 2、读取文件 ## java程序 --> JVM --> OS --> OS调用读取数据的方法 --> 读取文件 ## 3、字节输入流读取文件的步骤 ## * 创建FileInputStream对象,构造方法中指定要读取的文件(路径名或者文件对象) * 使用FileInputStream对象的方法read,读取文件 * 使用FileInputStream对象的方法close,释放资源 package cn.zhuobo.day14.streamOutput; import java.io.FileInputStream; import java.io.IOException; public class Demo02FileInputStream { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("/home/zhuobo/Desktop/a.txt"); /*int i = fis.read(); System.out.println(i);// 98 i = fis.read(); System.out.println(i);// 99 i = fis.read(); System.out.println(i);// 104*/ int i = 0; while ((i = fis.read()) != -1) { System.out.println(i); }// 循环读取直到末尾,-1是末尾 } } ## 4、字节输入流一次读取一个字节的原理 ## 每次指针向后移动一个单位 ## 5、一次读取多个字节 ## 使用`int read(byte[] b)` byte[] bytes = new byte[5];// 每次读取最多5个,但是一般定义长度为1024 int len = fis.read(bytes);// len指的是读取的有效字节个数 String str = new String(bytes); System.out.println(len); System.out.println(str); byte[] bytes = new byte[1024]; int len = 0; while ((len = fis.read(bytes)) != -1) { System.out.println((new String(bytes)).trim()); } ## 6、文件复制练习 ## 原文件-->读出来-->写进去-->目标文件 package cn.zhuobo.day14.streamOutput; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy { public static void main(String[] args) throws IOException { File fileDes = new File("/home/zhuobo/Desktop/22.png"); FileOutputStream fos = new FileOutputStream(fileDes); File fileSource = new File("/home/zhuobo/Desktop/dir/1.png"); FileInputStream fis = new FileInputStream(fileSource); int len = 0; byte[] bytes = new byte[1024]; while((len = fis.read(bytes)) != -1) { fos.write(bytes, 0, len); } // 先关闭写的流(output)再关闭读的流(input) fos.close(); fis.close(); } 转载于:https://www.cnblogs.com/zhuobo/p/10657501.html
还没有评论,来说两句吧...