zoukankan      html  css  js  c++  java
  • ava.io.InputStream & java.io.FileInputStream

    java.io.InputStream & java.io.FileInputStream

    java.io.InputStream,这个抽象类是表示字节输入流的超类,这个抽象类的共性的方法有:

    方法 作用
    int read() 从输入流中读取数据的下一个字节,并返回,到末尾就返回-1
    int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组b之中
    void close() 关闭输入流,并释放与输入流相关的系统资源

    java.io.FileInputStream extends InputStream

    构造方法

    构造方法 作用
    FileInputStream(String name) 创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件
    FileInputStream(File file) 创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件

    参数: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();
        }
    
  • 相关阅读:
    C#Table转成json工具
    设置npm注册表配置为淘宝镜像
    总结js面向对象调用的几种模式
    gitHub初使用
    对象的防篡改
    offsetWidth clientWidth scrollWidth的区别
    js中的new操作符
    setTimeot与setInterval定时器
    事件捕获 事件冒泡和事件委托
    一个页面从输入URL到加载完成,发生什么事
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10657501.html
Copyright © 2011-2022 走看看