Home > Java > javaTutorial > How to use the byte input stream of Java IO stream

How to use the byte input stream of Java IO stream

WBOY
Release: 2023-05-17 15:13:06
forward
663 people have browsed it

一、InputStream字节输入流

①、是一个抽象类,不能够创建对象,需要被继承才能够使用

②、在java.io包下,使用时需要导入

③、公共的方法:

方法一: int read()

方法二: int read(byte[] b)

方法三: void close()

更多方法请查看官方API

二、FileInputStream文件输入类

①、该类继承了InputStream,可以使用InputStream中的方法

②、能够把硬盘文件中的数据读取到内存中使用

③、构造方法

FileInputStream (String name)
FileInputStream (File file)
Copy after login

参数的含义:

name 是文件的路径

file 是文件

作用:

创建对象

把对象指定到构造方法中药读取的文件

④、使用步骤

1、创建FileInputStream对象,构造方法中绑定要读取的数据源

2、使用对象中的read方法,读取数据

3、释放资源

⑤、read()方法

读取到文件末尾会返回-1(不管读多少次)

How to use the byte input stream of Java IO stream

⑥、补充:String的构造函数

1、String (byte[] bytes) 把字节数组转换为字符串

2、String (byte[] bytes,int offset,int length) 把字节数组的一部分转换为字符串,从offset位置开始,取length长

⑦、一次性读取多个文件

// todo 一次性读取多个字节
// 1、定义一个字节数组
byte[] bytes = new byte[3];
// 2、创建文件输入对象
FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
// 3、读取文件
int read = fis.read(bytes);
// 4、输出
System.out.println(new String(bytes));
Copy after login

⑧、使用循环一次性读取多个字节

// 一次性读取多个字节
byte[] bytes1 = new byte[1024];
FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
int len = 0;
while ((len=fis.read(bytes1))!=-1){
System.out.println(new String(bytes1,0,len));

}
Copy after login

三、文件复制

原理:一读一写

目的:将A地址里面的a文件复制到B地址里面去

步骤:

1、创建一个字节输入流对象,构造方法中绑定要读取的数据源

2、创建一个字节输出流对象,构造方法中绑定要写入的目的地

3、使用字节输入流对象中的方法read读取文件

4、使用字节输出流对象中的方法write吧读取到的字节写入到目的地文件中

5、释放资源(先释放写的资源再释放读的资源,因为写完就代表已经读完了)

方式一:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {
    public static void main(String[] args) {

        try {
            long s = System.currentTimeMillis();
            // 1、创建字节输入流  起始地
            FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
            // 2、创建字节输出流  目的地
            FileOutputStream fos = new FileOutputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\copy\\a.txt");
            // 3、读取数据并写入目的地
            int len = 0;
            while ((len = fis.read())!=-1){
                fos.write(len);
            }
            long e = System.currentTimeMillis();
            System.out.println("传输文件总共用时:"+(e-s)+"毫秒");
            // 4、释放资源
            fos.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }




    }
}
Copy after login

耗时:2毫秒

方式二:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {
    public static void main(String[] args) {

        try {
            long s = System.currentTimeMillis();
            // 1、创建字节输入流  起始地
            FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
            // 2、创建字节输出流  目的地
            FileOutputStream fos = new FileOutputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\copy\\a.txt");
            // 3、读取数据并写入目的地
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = fis.read(b))!=-1){
                fos.write(b,0,len);
            }
            long e = System.currentTimeMillis();
            System.out.println("传输文件总共用时:"+(e-s)+"毫秒");
            // 4、释放资源
            fos.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }




    }
}
Copy after login

两者的区别:可以很明显的看出来方式一和方式二的区别在于:在循环的时候判断条件那里出现的不一样,使用方式二的方式可以是文件复制更加的快捷,在初期推荐使用第二种方式进行文件的复制

The above is the detailed content of How to use the byte input stream of Java IO stream. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template