字节流读写文件

字节流拷贝文件—按单个字节读写

FileInputStream:普通的字节输入流,用来读取数据的

构造方法:

​ public FileInputStream(String pathname);

成员方法:

​ public int read();

单个:一次读取一个字节,并返回读取到的内容,读不到返回-1

数组:一次读取一个字节数组,将读取到的内容存入到数组中,并返回读取到的有效字节数,读不到则返回-1

FileOutputStream:普通的字节输出流,用来写数据

构造方法:

​ public FileOutputStream(String pathname);

成员方法:

​ public void write(int len);

单个:一次写入一个字节

数组:一次写入一个指定的字节数组

步骤:

创建字节流读文件对象:

InputStream is = new FileInputStream(“1.jpg”);

创建字节流写文件对象:

OutputStream os = new FileOutputStream(“D:\2.jpg”);

使用while循环读写数据:

int b;

while (b = is.read() != -1) {

​ os.write(b);

}

异常处理:

throws IOException

关闭资源:

is.close();

os.close();

自行在相关文件夹下放入图片

package io.demo;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class StreamDemo {public static void main(String[] args) throws IOException {
//        需求:通过普通的字节流,一次读写一个字节的方式,将a.jpg复制到b.jpg中
//        1.创建字节输入流,关联数据源文件FileInputStream is = new FileInputStream("lib/1.jpg");
//        2.创建字节输出流,关联目的地文件FileOutputStream os = new FileOutputStream("lib/2.jpg");
//        3.定义变量,记录读取到的内容int i;
//        4.循环读取,只要条件满足就一直读取,并将读取到的内容渎职给变量while ((i = is.read()) != -1) {
//        5.将读取到的内容写入目的地文件中os.write(i);}
//        6.释放资源is.close();os.close();}
}

字节流拷贝文件—按字节数组读写

创建字节流读文件对象:

InputStream is = new FileInputStream(“1.jpg”);

创建字节流写文件对象:

OutputStream os = new FileOutputStream(“D:\2.jpg”);

异常处理:

throws IOException

关闭资源:

is.close();

os.close();

定义字节数组,每次读取2048个字节:

byte[] b = new byte[2048];

使用while循环读写数据:

int i;

while (i = is.read() != -1) {

​ os.write(b,0,i);

}

package io.demo;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class StreamDemo2 {public static void main(String[] args) throws IOException {
//        需求:通过普通的字节流,一次读写一个字节数组的方式,将a.jpg复制到b.jpg中
//        1.创建字节输入流对象,关联数据源文件FileInputStream is = new FileInputStream("lib/1.jpg");
//        2.创建字节输出流对象,关联目的地文件FileOutputStream os = new FileOutputStream("lib/3.jpg");
//        3.定义变量,接收读取到的内容byte[] b = new byte[1024];              //[]里面写多少都行,最好是写1024的整数倍
//        用来记录读取到的有效字节数int len;
//        4.循环读取,只要条件满足,就一直读取,并将读取到的内容(有效的字节数)赋值给变量while ((len = is.read(b)) != -1) {
//        5.将读取到的数据写入目的地文件os.write(b,0,len);}
//        6.释放文件is.close();os.close();}
}

字节缓冲流拷贝文件的标准代码

BufferedInputStream:字节缓冲输入流(也叫高效字节输入流),用来读数据的;

构造方法:

​ public BufferedInputStream(InputStream is);

成员方法:

​ public int read();

单个:一次读取一个一个字节,并返回读取到的内容,读不到返回-1;

BufferedOutputStream:字节缓冲输出流(也叫高效字节输出流),用来写数据的;

构造方法:

​ public BufferedOutputStream(OutputStream os);

成员方法:

​ public void write(int len);

单个:一次写入一个字节;

**特点:**字节缓冲流有自己的缓冲区,大小为8192个字节,也就是8KB

步骤:

创建字节缓冲流读文件对象:

​ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(“1.jpg”));

创建字节缓冲流写文件对象:

​ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(“2.jpg”));

异常处理:

throws IOException

关闭资源:

is.close();

os.close();

使用while循环读写数据:

int i;

while (i = bis.read() != -1) {

​ os.write(i);

}

package io.demo;import java.io.*;
//总结:
//        拷贝纯文本文件使用字符流,拷贝其他(图片,视频,音频)使用字节流
public class StreamDemo3 {public static void main(String[] args) throws IOException {
//需求:通过字节缓冲流,将1.jpg复制到2.jpg中
//        1.创建字节输入流对象,关联数据源文件
//        分写
//        FileInputStream is = new FileInputStream("lib/1.jpg");
//        BufferedInputStream bis = new BufferedInputStream(is);
//        合并BufferedInputStream bis = new BufferedInputStream(new FileInputStream("lib/1.txt"));
//        2.创建字节输出流对象,关联目的地文件
//        分写
//        FileOutputStream os = new FileOutputStream("lib/2.jpg");
//        BufferedOutputStream bos = new BufferedOutputStream(os);
//        合并BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("lib/2.txt"));
//        3.定义变量,用来存放读取到的数据int len;
//        4.循环读取,只要条件满足就一直读取,并将读取到的内容赋值给变量while ((len = bis.read()) != -1) {      //底层是按照字节数组来操作的//        5.将读取到的内容写入目的地文件中bos.write(len);}
//        6.释放资源bis.close();bos.close();}
}

**总结:**拷贝纯文本文件使用字符流,拷贝其他(图片,视频,音频)使用字节流。

Java入门学习第十七天——字节流读写文件、字节缓冲流拷贝文件相关推荐

  1. Java学习第十六天——字符流读写文件、字符缓冲流拷贝文件

    字符流读写文件 字符流读数据-按单个字符读取 创建字符流读文件对象: ​ Reader reader = new FileReader("readme.txt"); 调用方法读取数 ...

  2. 字节流--字节流缓冲区、字节缓冲流

    1.字节流缓冲区 package com.example;import java.io.FileInputStream; import java.io.FileOutputStream; import ...

  3. Java基础之写文件——通过缓冲流写文件(StreamOutputToFile)

    控制台程序,生成一些二进制整型值并且将它们写入到文件中. 1 import java.nio.file.*; 2 import java.nio.*; 3 import java.io.*; 4 5 ...

  4. Java基础学习(二十七)之IO流

    1. File 1.1 File类概述和构造方法(myFile中的com.itheima_01中的FileDemo01) File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对 ...

  5. Java练习题:字节缓冲流性能分析、 文档顺序恢复

    字节缓冲流性能分析 分别使用四种字节缓冲流进行文件复制测试其速度 这里准备了一个较大的视频文件130MB的视频文件进行测试 import com.wukong.io.BufferedInputStre ...

  6. java入门学习_Java入门学习进阶知识点

    Java入门学习进阶知识点 入门阶段,主要是培养Java语言的编程思想.了解Java语言的语法,书写规范等,掌握Eclipse.MyEclipse等开发工具,编写Java代码的能力.学完这个阶段你应该 ...

  7. Java入门学习注意事项有哪些?

    想要学好java技术,做好学习规划路线和注意事项是非常重要的,尤其是零基础学员,Java涉及到的知识点非常多,我们需要制定合理的Java学习路线图,这样会事半功倍,下面小编和大家总结一下Java入门学 ...

  8. Java入门学习笔记[狂神说Java]

    写在前面: 本文根据B站狂神说Java 与菜鸟教程 整理而来,仅供个人学习使用,如有侵权,请联系删除. 文章目录 IDEA使用 Java基础01:注释 Java基础02:数据类型 Java基础03:类 ...

  9. 考研二战失败 我的从零开始Java入门学习(十)

    文章目录 一.集合 1.Collection集合类 1.1 Collection集合类方法 1.2 Collection的子类 2.Map集合类 2.1 Map集合类方法 2.2 Map类的子类 3. ...

最新文章

  1. php利用上传文件,如何利用PHP上传文件
  2. multi-target not supporte
  3. Javascript中的Document对象详解
  4. gflags调试访问越界
  5. php 派生类 构造,C++派生类的构造函数和析构函数
  6. python中assert_在Python中带有示例的assert关键字
  7. 从 A/Looper: Could not create epoll instance. errno=24 错误浅谈解决各种 bug 的思路
  8. python软件下载百度云-python电子书学习资料打包分享百度云资源下载
  9. 2018年中国财富管理才真正迎来发展元年
  10. Vulkan Tutorial
  11. window10 删除桌面删除不掉的ie图标(快捷方式)
  12. 计算机网络说明文,电脑的说明文600字
  13. 同一个基站连接两个核心网AMF POOL的场景分析及带AMF重选的注册流程
  14. 联想笔记本上Ubuntu无线网卡问题
  15. 2019年的计划,做最好的自己。
  16. 分省市县地理空间矩阵:地级市空间、地理距离矩阵等多指标数据集
  17. Acwing 905. 区间选点
  18. 静默升级linux,Firefox 10 正式发布 支持静默升级功能
  19. NORDIC52832 TWI(I2C) 特点 (2)驱动CHT8305C 温湿度传感器
  20. Java-实现动态数组(ArrayList<Integer>集合)

热门文章

  1. Android Handler机制 - handleMessage究竟在哪个线程执行
  2. H盘提示“文件或目录损坏且无法读取”怎么修复
  3. ks通过恶意低绩效来变相裁员(五)绩效申诉就是「小六自证吃了一碗凉粉」
  4. deepin卸载了python_deepin官方论坛-深度科技官网旗下网站
  5. oracle中ccuser,Oracle数据库查询与SESSIONS_PER_USER大于40
  6. “OneFlow U” 2020年度社区之星——吴文童
  7. Python画饼状图解决字体重叠问题
  8. serializeArray 与 serialize
  9. 蓝桥杯 基础练习 BASIC-8 回文数 循环 判断 回文数
  10. 拥抱幸福 就在人间的四月天