Java IO流---字节流
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命名。
使用字节输入流读数据的步骤:
创建字节输入流对象
调用字节输入流对象的读数据方法
释放资源
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中的内容读取出来在控制台输出
使用字节输入流读数据的步骤:
创建字节输入流对象
调用字节输入流对象的读数据方法
释放资源
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流---字节流相关推荐
- Java IO流 - 字节流的使用详细介绍
文章目录 IO流的基本介绍 字节流的使用 文件字节输入流 创建字节输入流 每次读取一个字节 每次读取一个数组 一次读取全部字节 文件字节输出流 创建字节输出流 写入文件输出流 文件拷贝练习 IO流的基 ...
- java byte char io流_吃透Java IO:字节流、字符流、缓冲流
前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流
一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...
- 吃透Java IO:字节流、字符流、缓冲流
IO流是Java中的一个重要构成部分,也是我们经常打交道的. 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握得很好,可以立即关闭文章.反之,你可以在后面得文章中寻找答案. ...
- 【Java基础】吃透Java IO:字节流、字符流、缓冲流
文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...
- java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流
IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...
- fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流
前言 有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身 ...
- Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...
最新文章
- 算法分析赛:从数据中挖掘价值,72万奖金,DCIC 2020 大数据赛道来了!
- python socket通信 recv 丢包_关于socket网络传输数据的阿里云论坛用户知识和技术交流...
- 微信小程序初步入坑指南
- cloud foundry_介绍“又一个” Cloud Foundry Gradle插件
- UVALive 6525 Attacking rooks 二分匹配 经典题
- 学习python的第五天
- Silverlight:纠结的快捷键问题
- Hadoop的eclipse1.1.2插件的安装和配置
- cad老是弹出命令中发生异常_打开CAD是时出现错误报告怎么解决?
- Falsy Bouncer 过滤数组假值 Array.filter()方法
- mac远程连接服务器问题 不存在该共享,Mac无法访问Windows共享服务器的解决方案...
- 鸟哥私房菜 第十五章、时间服务器: NTP 服务器
- idea 使用自动注解时候红色警告的消除办法
- java对接ntlm_通过NTLM获取信息.
- macbook pro如何外接显示器?macbook 外接显示器教程
- Java多线程编程之读写锁【ReentrantReadWriteLock】
- mysql通过卡号识别银行_Java 根据银行卡号获取银行名称以及图标
- Sectigo EV代码签名证书申请教程
- 为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?
- 2015-06-28 14:57:18 OJ期末模考G