您好,欢迎访问一九零五行业门户网

Java IO流之字节输入流如何使用

一、inputstream字节输入流①、是一个抽象类,不能够创建对象,需要被继承才能够使用
②、在java.io包下,使用时需要导入
③、公共的方法:
方法一: int read()
方法二: int read(byte[] b)
方法三: void close()
更多方法请查看官方api
二、fileinputstream文件输入类①、该类继承了inputstream,可以使用inputstream中的方法
②、能够把硬盘文件中的数据读取到内存中使用
③、构造方法
fileinputstream (string name)fileinputstream (file file)
参数的含义:
name 是文件的路径
file 是文件
作用:
创建对象
把对象指定到构造方法中药读取的文件
④、使用步骤
1、创建fileinputstream对象,构造方法中绑定要读取的数据源
2、使用对象中的read方法,读取数据
3、释放资源
⑤、read()方法
读取到文件末尾会返回-1(不管读多少次)
⑥、补充: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));
⑧、使用循环一次性读取多个字节
// 一次性读取多个字节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));}
三、文件复制原理:一读一写
目的:将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(); } }}
耗时: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(); } }}
两者的区别:可以很明显的看出来方式一和方式二的区别在于:在循环的时候判断条件那里出现的不一样,使用方式二的方式可以是文件复制更加的快捷,在初期推荐使用第二种方式进行文件的复制
以上就是java io流之字节输入流如何使用的详细内容。
其它类似信息

推荐信息