IO流概述:

  • IO:输入输出(input/output)

  • 流:是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输称为流,流的本质是数据传输

  • IO流就是用来处理设备间数据传输问题的

    常见应用:文件复制,文件上传/下载

IO流的分类:

  • 按照数据的流向:

    输入流:读数据

    输出流:写数据

  • 按照数据类型:

    字节流

    字节输入流,字节输出流

    字符流

    字符输入流,字符输出流

一般来说,我们说IO流的分类是按照数据类型来分的

  • 如果数据通过Windows自带的记事本软件打开,还可以读懂里面的内容,就使用字符流,否则使用字节流,若不知道使用哪种,就用字节流

字节流写数据

字节流抽象基类

  • InputStream:这个抽象类是表示字节输入流的所有类的超类

  • OutputStream:这个抽象类是表示字节输出流的所有类的超类

  • 子类名特点:子类名称都是以其父类名作为子类名的后缀

FileOutputStream:文件输出流用于将数据写入File

  • FileOutputStream(String name):创建文件输出流以指定的名称写入文件

public class FileOutputStreamDemo01 {public static void main(String[] args) throws IOException {//创建字节输出流对象//FileOutputStream(String name)FileOutputStream fos = new FileOutputStream("F:\\io\\java.txt");/*做了三件事:1.调用系统功能创建了文件2.创建了字节输出流对象3.让字节输出流对象指向创建好的文件*///void write(int b):将指定的字节写入此文件输出流fos.write(97);//afos.write(57);//9fos.write(55);//7
​//最后要释放资源//void clos():关闭此文件输出流并释放与此流相关联的任何系统资源fos.close();}
}

使用字节输出流写数据的步骤:

  • 创建字节输出流对象(调用系统功能创建了文件;创建了字节输出流对象;让字节输出流对象指向创建好的文件)

  • 调用字节输出流对象的写数据方法

  • 释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)

字节流写数据的3种方式

public class FileOutputStreamDemo02 {public static void main(String[] args) throws IOException {//创建字节输出流对象//FileOutputStream(String name)FileOutputStream fos = new FileOutputStream("F:\\io\\java.txt");
​//public void write(int b)fos.write(97);
​//public void write(byte[] b)byte[] arr1= {98,99};//byte[] getBytes():返回字符串对应的字节数组byte[] bys = "abcde".getBytes(StandardCharsets.UTF_8);fos.write(bys);
​//public void write(byte[] b,int off,int len)byte[] arr2= {97,98,99};fos.write(arr2,1,1);
​fos.close();}
}

字节流写数据的2个问题

字节流写数据如何实现换行

  • 写完数据后加换行符

    • Windows:\r\n

    • Linux:\n

    • mac:\r

字节流写数据如何实现追加写入

  • public FileOutputStream(String name,boolean append)

  • 创建文件输出流以指定的名称写入文件,如果第二个参数为true,则字节将写入文件的末尾而不是开头

​
public class FileOutputStreamDemo03 {public static void main(String[] args) throws IOException {//public FileOutputStream(String name,boolean append)//      创建文件输出流以指定的名称写入文件//      如果第二个参数为true,则字节将写入文件的末尾而不是开头FileOutputStream fos = new FileOutputStream("F:\\io\\java.txt",true);
​for(int i = 0;i<10;i++){fos.write("hello".getBytes(StandardCharsets.UTF_8));//实现换行fos.write("\r\n".getBytes(StandardCharsets.UTF_8));}
​fos.close();}
}

字节流读数据(一次读一个字节)

需求:把文件java.txt中的内容读取出来在控制台输出

FileInputStream:从文件系统中的文件获取输入字节

  • FileInputSteam(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名。

使用字节输入流读数据的步骤:

  1. 创建字节输入流对象

  2. 调用字节输入流对象的读数据方法

  3. 释放资源

public class FileInputStreamDemo01 {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("F:\\io\\java.txt");int i = fis.read();//如果达到文件的末尾:-1System.out.print(i);i = fis.read();while (i != -1) {System.out.print((char)i);i = fis.read();}fis.close();}
}

字节流读数据(一次读一个字节数组)

需求:把文件java.txt中的内容读取出来在控制台输出

使用字节输入流读数据的步骤:

  1. 创建字节输入流对象

  2. 调用字节输入流对象的读数据方法

  3. 释放资源

public class FileInputStreamDemo02 {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("F:\\io\\java.txt");
​//调用字节输入流对象的读数据方法//int read(byte[] b):从该输入流读取最多b.length个子节点数据到一个字节数组中byte[] bys = new byte[5];
​//第一次读数据int len = fis.read(bys);System.out.println(len);System.out.println(new String(bys));
​//第二次读数据len = fis.read(bys);System.out.println(len);System.out.println(new String(bys));
​//第三次读数据len = fis.read(bys);System.out.println(len);System.out.println(new String(bys));/*
​hello\r\nworld\r\n
​第一次:hello           5第二次:\r\nwor         5第三次:ld\r\nr         4*///第三次修改//String (byte[] bytes,int offset,int length)System.out.println(new String(bys,0,len));// ld\r\n       4
​//再读,末尾-1byte[] bys1 = new byte[1024];int len1;while((len1=fis.read(bys1))!=-1){System.out.println(new String(bys1,0,len1));}}
}

Java IO流---字节流相关推荐

  1. Java IO流 - 字节流的使用详细介绍

    文章目录 IO流的基本介绍 字节流的使用 文件字节输入流 创建字节输入流 每次读取一个字节 每次读取一个数组 一次读取全部字节 文件字节输出流 创建字节输出流 写入文件输出流 文件拷贝练习 IO流的基 ...

  2. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

  3. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  4. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流

    一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...

  5. 吃透Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的. 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握得很好,可以立即关闭文章.反之,你可以在后面得文章中寻找答案. ...

  6. 【Java基础】吃透Java IO:字节流、字符流、缓冲流

    文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...

  7. java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...

  8. fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流

    前言 有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身 ...

  9. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...

最新文章

  1. 算法分析赛:从数据中挖掘价值,72万奖金,DCIC 2020 大数据赛道来了!
  2. python socket通信 recv 丢包_关于socket网络传输数据的阿里云论坛用户知识和技术交流...
  3. 微信小程序初步入坑指南
  4. cloud foundry_介绍“又一个” Cloud Foundry Gradle插件
  5. UVALive 6525 Attacking rooks 二分匹配 经典题
  6. 学习python的第五天
  7. Silverlight:纠结的快捷键问题
  8. Hadoop的eclipse1.1.2插件的安装和配置
  9. cad老是弹出命令中发生异常_打开CAD是时出现错误报告怎么解决?
  10. Falsy Bouncer 过滤数组假值 Array.filter()方法
  11. mac远程连接服务器问题 不存在该共享,Mac无法访问Windows共享服务器的解决方案...
  12. 鸟哥私房菜 第十五章、时间服务器: NTP 服务器
  13. idea 使用自动注解时候红色警告的消除办法
  14. java对接ntlm_通过NTLM获取信息.
  15. macbook pro如何外接显示器?macbook 外接显示器教程
  16. Java多线程编程之读写锁【ReentrantReadWriteLock】
  17. mysql通过卡号识别银行_Java 根据银行卡号获取银行名称以及图标
  18. Sectigo EV代码签名证书申请教程
  19. 为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?
  20. 2015-06-28 14:57:18 OJ期末模考G

热门文章

  1. tabLayout当tab数目较多,一屏无法展示时,按键有时会没有反应
  2. AtCoder Beginner Contest 174 E.Logs
  3. 如何把Windows CE安装文件下载到本地进行安装
  4. 向左还是向右?聊聊中台建设中的那些纠结事
  5. Nginx 相关问题(持续更新一:Cookie问题)
  6. 神经网络适用于什么问题,神经网络和计算机网络
  7. ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了
  8. cyt の heart
  9. 【小程序源码】星座运势,周公解梦下载
  10. 云开发周公解梦微信小程序源码/支持流量主功能