InputStream:字节输入流

  • InputStream抽象类是所有类字节输入流的超类(父类)
  • InputStream常用的子类
  1. FilelnputStream:文件输入流
  2. BufferedInputStream:缓冲字节输入流
  3. ObjectlnputStream:对象字节输入流

    FilelnputStream应用实例

    需求:

    请使用FilelnputStream 读取hello.txt 文件,并将文件内容显示到控制台

    实现:

    ```java package test;

import org.junit.Test; import java.io.FileInputStream; import java.io.IOException; /**

  • 演示FileInputStream的使用(字节输入流 文件—> 程序) */ public class Main { public static void main(String[] args) {

    1. Main main = new Main();
    2. main.readFile01();
    3. System.out.println("\n============");
    4. main.readFile02();

    }

    /**

    • 演示读取文件…
    • 单个字节的读取,效率比较低
    • -> 使用 read(byte[] b) */ @Test public void readFile01() { String filePath = “D:\hello.txt”; int readData = 0; FileInputStream fileInputStream = null;//放到try块的外边,扩大作用域 try {

      1. //创建 FileInputStream 对象,用于读取 文件
      2. fileInputStream = new FileInputStream(filePath);
      3. //从该输入流读取一个字节的数据。 如果没有输入可用,此方法将阻止。
      4. //如果返回-1 , 表示读取完毕
      5. while ((readData = fileInputStream.read()) != -1) {
      6. //读取中文会乱码
      7. System.out.print((char)readData);//转成char显示
      8. }

      } catch (IOException e) {

      1. e.printStackTrace();

      } finally {

      1. //关闭文件流,释放资源.
      2. try {
      3. fileInputStream.close();
      4. } catch (IOException e) {
      5. e.printStackTrace();
      6. }

      }

      }

      /**

    • 使用 read(byte[] b) 读取文件,提高效率 */ @Test public void readFile02() { String filePath = “D:\hello.txt”; //字节数组 byte[] buf = new byte[8]; //一次读取8个字节. int readLen = 0; FileInputStream fileInputStream = null; try {

      1. //创建 FileInputStream 对象,用于读取 文件
      2. fileInputStream = new FileInputStream(filePath);
      3. //从该输入流读取最多b.length字节的数据到字节数组。 此方法将阻塞,直到某些输入可用。
      4. //如果返回-1 , 表示读取完毕
      5. //如果读取正常, 返回实际读取的字节数
      6. while ((readLen = fileInputStream.read(buf)) != -1) {
      7. System.out.print(new String(buf, 0, readLen));//显示
      8. }

      } catch (IOException e) {

      1. e.printStackTrace();

      } finally {

      1. //关闭文件流,释放资源.
      2. try {
      3. fileInputStream.close();
      4. } catch (IOException e) {
      5. e.printStackTrace();
      6. }

      }

      } } ``` image.png