目录
一、InputStream字节输入流二、FileInputStream文件输入类三、文件复制一、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流之字节输入流的使用详解的文章就介绍到这了,更多相关Java 字节输入流内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 2亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 3现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 4如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 5AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 6转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 7充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 8好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 9名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 10亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战