字节流读写适用于任何文件,包括图片,视频等。

基本字节流

一次读一个字节和一次读一个字节数组

  1. FileInputStream fis = new FileInputStream(path);
  2. //一次读一个字节
  3. int by;
  4. //read()==-1则代表文件读到了末尾
  5. while ((by = fis.read()) != -1) {
  6. System.out.print((char) by);
  7. }
  8.  
  9. //一次读一个字节数组 并转换成字符串
  10. byte[] bytes = new byte[1024];
  11. int len;
  12. //read()==-1则代表文件读到了末尾
  13. while ((len = fis.read(bytes)) != -1) {
  14. System.out.println(new String(bytes, 0, len));
  15. len = fis.read(bytes);
  16. }
  17. //close
  18. fis.close();

一次写一个字节和一次写一个字节数组

  1. FileOutputStream fos = new FileOutputStream(path);
  2. // 写入方法
  3. fos.write(65);
  4. byte[] bytes = { 1, 2, 3, 4, 5 };
  5. fos.write(bytes);
  6. // 写入字符串
  7. byte[] bys = "字节流输出写入文件2".getBytes();
  8. fos.write(bys);
  9. // 写字符串一部分
  10. fos.write(bys, 0, 4);
  11.  
  12. // 换行写入
  13. for (int i = 0; i < 10; i++) {
  14. fos.write("张学友".getBytes());
  15. fos.write("\r\n".getBytes());
  16. }
  17. // 追加写入 实例化FileOutputStream的时候 构造方法 选择下面这个带true的
  18. fos = new FileOutputStream("a.txt", true);
  19. //
  20. // 换行写入
  21. for (int i = 0; i < 10; i++) {
  22. fos.write("刘德华".getBytes());
  23. fos.write("\r\n".getBytes());
  24. }
  25.  
  26. // close
  27. fos.close();

复制文件:也就是读出来直接写入到新文件中

  1. // 首先读
  2. FileInputStream fis = new FileInputStream(inputPath);
  3. // 然后写
  4. FileOutputStream fos = new FileOutputStream(outPutPath);
  5. int by;//一次读写一个字节
  6. while ((by = fis.read()) != -1) {
  7. fos.write(by);
  8. }
  9.  
  10. // 一次读写一个字节数组
  11. byte[] bys = new byte[1024];
  12. int len;
  13. while ((len = fis.read(bys)) != -1) {
  14. fos.write(bys, 0, len);
  15. }
  16. fis.close();
  17. fos.close();

缓冲区字节流

一次读一个字节和一次读一个字节数组

  1. BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
  2. // 单字节
  3. int by;
  4. while ((by = bis.read()) != -1) {
  5. System.out.print((char)by);
  6. }
  7. // 字节数组
  8. byte[] bys = new byte[1024];
  9. int len;
  10. while ((len = bis.read(bys)) != -1) {
  11. System.out.println(new String(bys, 0, len));
  12. }
  13. bis.close();

一次写一个字节和一次写一个字节数组

  1. // 写入 new FileOutputStream(path, true) 第二个参数设置为true代表是在文件中追加写入
  2. BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path, true));
  3. bos.write(64);
  4. bos.write("银鞍照白马\r\n".getBytes());
  5. bos.write("飒沓如流星\r\n".getBytes());
  6. bos.close();

复制文件:也就是读出来直接写入到新文件中

  1. // 缓冲区字节流一次读写一个字节
  2. BufferedOutputStream bos1 = new BufferedOutputStream(new FileOutputStream(outPutPath));
  3. BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream(inputPath));
  4. int by2;
  5. while ((by2 = bis1.read()) != -1) {
  6. bos1.write(by2);
  7. }
  8. bos1.close();
  9. bis1.close();// 缓冲区字节流一次读写一个字节数组
  10. BufferedInputStream bis2 = new BufferedInputStream(new FileInputStream(inputPath));
  11. BufferedOutputStream bos2 = new BufferedOutputStream(new FileOutputStream(outPutPath));
  12. byte[] bys4 = new byte[1024];
  13. int len4;
  14. while ((len4 = bis2.read(bys4)) != -1) {
  15. bos2.write(bys4, 0, len4);
  16. }
  17. bos2.close();
  18. bis2.close();

一次读写一个字节数组要比一次读写一个字节的速度快

缓冲区字节流一次读写一个字节数组比基本字节流一次读写一个字节数组速度快

java基础之io流总结三:字节流读写的更多相关文章

  1. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

  2. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  3. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  4. Java中的IO流(三)

    上一篇<Java中的IO流(二)>把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录. 一,File类的构造函数及字段 ...

  5. java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理

    一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...

  6. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  7. java基础43 IO流技术(输入字节流/缓冲输入字节流)

    通过File对象可以读取文件或者文件夹的属性数据,如果要读取文件的内容数据,那么我们就要使用IO技术. 一.输入字节流 输入字节流的体系:  -------| InputStream:所有输入字节流的 ...

  8. java基础之 IO流

    javaIO流   IO流 : (input  output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方.   IO技术的作用:主要就是解决设备和设备之间的数据传输问题 ...

  9. 【java基础】]IO流

    IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...

随机推荐

  1. canvas实现点击带水纹的按钮

    咱今天在闲逛网页时,看到一个点击带水纹的按钮特效,尼玛,写的还挺好,先看效果: 于是就奔着升级版的拿来主义,别人的好东西,咱都要拿来滴,so,扒代码! 完整代码在最后,是经过我的改进优化滴. 在这里先 ...

  2. 如何突破JAVA程序员三年的门槛

    第一阶段:三年 我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发.我们知道如何团 ...

  3. 前端之JavaScript 补充

    1. BOM window location.href = "https://www.sogo.com" location.reload() // 重新加载当前页 location ...

  4. 图解Fiddler如何抓手机APP数据包过滤抓取

    使用fidder抓取浏览器的包相信不是问题,那么使用fidder 抓取app的数据包呢??? 于是,找了一篇博客来学习一下,可以参考一下,根据自己的需求来实现. 在网上自己学习,然后整理了我所用到的, ...

  5. Maven根据不同的环境打包不同的配置

    前言: 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置等等. 那么就需要借助maven提 ...

  6. Ubuntu的复制粘贴操作及常用快捷键(摘自网络)

    Ubuntu的复制粘贴操作 终端最大化快捷键:crtl + win + 上 1.最为简单,最为常用的应该是鼠标右键操作了,可以选中文件,字符等,右键鼠标,复制,到目的地右键鼠标,粘贴就结束了. 2.快 ...

  7. 关于在windows server 2008 上部署wampserver2.5部署的问题

    1.关闭windows自带防火墙 2.httpd.conf文件权限 apache 2.4.9 外网访问的问题参考此文: http://blog.csdn.net/lysc_forever/articl ...

  8. fragment在水平/垂直时的应用

    直接看代码 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedIns ...

  9. 用Toast来增加调试效率的小技巧

    import android.content.Context; import android.widget.Toast; /** * Created by apple on 10/7/15. */ p ...

  10. layui导航的使用

    在项目开发的时候,需要后台的系统好看点,左边的导航需要设计为多级的,而且要点击当前的链接页面,刷新后要实现选中状态 学习源头:http://www.layui.com/doc/element/nav. ...