【Java】IO流 - 节点流和处理流【Buffered】
➤ Java 输入输出IO流 全部导航
文章目录
- 节点流和处理流
- BufferedReader
- BufferedWriter
- Bufferd拷贝
- BufferedInputStream/BufferedOutputStream
节点流和处理流
数据源就是存放数据的地方,可以是 文件、数组 等等;
- 节点流是比较底层的,直接操作二进制数据
包装流(处理流)是将节点流给包装了起来,更加灵活(相当于任意节点流,任意数据源都可)
BufferedReader里的Reader方法相当于把FileInputStream、FileReader等等给包装了起来,涵盖这些方法,可以是任意一个节点流(只要是Reader的子类就可以)同理 BufferedWriter也一样 (装饰器模式)
节点流和处理流一览:
Reader是抽象父类,而FileInputStream、FileReader等等是实现方法的子类(节点流);BufferedReader是继承Reader的属性,然后把节点流给封装扩展起来,使用更便捷,不用区分文件、数组、字符等等。
- BufferedReader和BufferedWriter属于字符流,都是按字符来读取数据的;
- 真正工作的其实还是节点流而不是处理流,处理流只是做了一个封装;
- 关闭处理流时,只需关闭最外层流(处理流)即可;
BufferedReader
- 使用BufferReader读取文本文件,并显示在控制台;
使用 readLine() 按行读取:
public static void main(String[] args) throws Exception {String filePath = "d:\\HelloWorld.txt" ;//自行创建编辑//创建BufferedReader对象BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));//读取String line;//按行读取,效率高/*说明:1.bufferedReader.readLine() 按行读取2.返回null时,表示文件读取完毕*/while((line = bufferedReader.readLine()) != null){System.out.println(line);}//关闭流,只需关闭BufferedReader,因为底层的节点流会自动关闭bufferedReader.close();
}
BufferedWriter
public static void main(String[] args) throws IOException {String filePath = "d:\\note.txt";//创建空白文件//创建BufferedWriter对象BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));//覆盖写入bufferedWriter.write("Hello!"); //需要追加就FileWriter(filePath,true)//插入一个和系统相关的换行bufferedWriter.newLine();bufferedWriter.write("Java!");bufferedWriter.newLine();bufferedWriter.write("祝你开心每一天~");//关闭外层流即可bufferedWriter.close();
}
Bufferd拷贝
public static void main(String[] args) throws Exception {/*说明:1.BufferedReader和BufferedWriter是安装字符操作2.不要去操作二进制文件,可能会造成损坏(例如音视频、doc、pdf)*/String srcFilePath = "d:\\HelloWorld.txt";//提前创建String destFilePath = "d:\\hello.txt";//目标文件BufferedReader bufferedReader =null;BufferedWriter bufferedWriter =null;bufferedReader = new BufferedReader(new FileReader(srcFilePath));bufferedWriter = new BufferedWriter(new FileWriter(destFilePath));String line;while((line=bufferedReader.readLine())!=null) {bufferedWriter.write(line);bufferedWriter.newLine();}System.out.println("拷贝完毕");//关闭资源if(bufferedReader!=null) bufferedWriter.close();if(bufferedWriter!=null) bufferedWriter.close();
}
既然 BufferedReader/BufferedWriter 不能操作二进制文件,
那对于二进制文件,该采用什么方法呢?
BufferedInputStream/BufferedOutputStream
- BufferedInputStream 是字节流 ,实现缓冲的输出流,可以将多个字节写入底层输出流中,而不必对每次字节写入调用底层系统。
音乐、视频的拷贝:
/*
演示使用BufferedInputStream和BufferedOutputStream拷贝*/
public static void main(String[] args) throws Exception{String srcFilePath = "d:\\蜘蛛侠.jpg";String destFilePath = "d:\\spiderman.jpg";//创建BufferedInputStream和BufferedOutputStream对象BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFilePath));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFilePath));//循环读取文件,并写入到destFilePath中byte[] buff = new byte[1024];int readLen = 0;//当返回-1时,表示文件读取完毕while((readLen = bis.read(buff))!=-1){bos.write(buff,0,readLen);}//关闭外层的处理流即可bis.close();bos.close();
字节流不仅仅可以操作二进制文件,还可以操作文本文件
【Java】IO流 - 节点流和处理流【Buffered】相关推荐
- java io 缓冲流_记忆系列-Java IO的缓存输入输出流(高效流)
2019-09-02今天是周一,应该是学校升国旗开学典礼的一天吧~ 然而垃圾的我还是没有找到工作,大专狗是真的没用~简历也不会看你的呀~ 在之前我自己也mark了字节和字符的流,但是呢读取数据量比较大 ...
- java.io对象读写_java _io_对象流,能够保存基本数据类型和对象
transient:该数据不需要序列化,数据透明(输出显示null),private transient String name; //写出后读取,读取的数徐与写出保持一致 public class ...
- java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...
- 酱油的笔记18:JAVA IO流
输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内存)中.将持久化的文件数据加载到内存中 输出:将程序(内存)数据输出到磁盘.U盘等存储设备中 Java 的 IO 流主要包括输入流和输出流两种 ...
- JAVA~~IO流和文件
Io流的分类 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物, 往内存中去,叫做输入(Input).或者叫做读(Read). 从内存中出来,叫做输出(Outpu ...
- Java IO流大闯关--IO流的常用实现类
这个系列的博客主要是对Java高级编程中IO流相关的知识点做一个梳理,内容主要包括File类.IO流原理及流的分类.文件流.缓冲流.转换流.标准输入输出流.打印流.数据流.对象流.随机存取文件流.NI ...
- java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...
IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...
- Java IO 之 介质流
2019独角兽企业重金招聘Python工程师标准>>> 自己工作虽有将近三年了,也算得上是一个程序老手了,但对IO这块一直一知半解,以至于每次写IO相关的代码时,总不能随心所欲的写出 ...
- (java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流
[Properties特点] /** 集合对象Properties类特点:* 1. 继承Hashtable,实现Map接口* 2. 该集合无泛型,键值都是字符串* 3. 键值可以存储到集合中,也可以存 ...
- Java IO流的“四大家族”
1. IO流的概述 理论部分 简单概括就是文件的输入与输出. 磁盘中文件的东西放到内存中的这个过程称为输入(Input)或称读(read),由于这个输入的过程会有数据的流动,就有了输入流(InputS ...
最新文章
- chrome安装或者重装 【windows】
- python爬虫用多线程还是多进程_python爬虫之多线程、多进程爬虫
- 【转】三五个人十来条枪 如何走出软件作坊成为开发正规军
- arduino openmv 显示图像_6 个芯片打造复古经典计算机:215 色显示,能编程能玩小游戏...
- python找图片不同_用openCV和Python 实现图片对比,并标识出不同点的方式
- 对于Neural ODE的小研究
- C++禁止隐式转换之explicit用法
- 计算机网络技术在教学中的,精选:浅析计算机网络技术在教育教学中的运用原稿...
- 网件刷breed_斐讯K2刷不死breed加padavan华硕固件教程
- 增值税普通发票冲红方法
- 基于单目视觉的平面目标定位和坐标测量 (上) - 坐标系和成像模型
- 科学计算机calc在哪儿,App Store 上的“NCalc科学计算器+”
- tl-wr842n服务器未响应,TL-WR842N路由器怎么重启? 重启路由器的技巧
- python鼠标键盘事件代码_Python鼠标键盘事件
- 笔记本电脑开机白屏怎么处理
- 360实习之--技术基础H卷
- IntelliJ IDEA pycharm webstorm 激活
- 1.6.太极平台:开发自己的后台系统首页
- 关于Java Web项目的技术点探讨
- buuctf-[BSidesCF 2020]Had a bad day(小宇特详解)