最近几天仔细学了Java的io流,本来是打算看视频通过视频来学习的,可是后来发现其实视频看不怎么懂也感觉不是很容易上手,所以就通过百度和api文档学习了Java的io流

io流可以有两个分类,一个是字节流和字符流,另一个是输入流和输出流。

先说说字节流和字符流吧:首先实际上字节流在操作的时候是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的时候下会用到缓冲区的,是通过缓冲区来操作文件的。字节流与字符流的其他区别呢就是读写单位不同,毫无疑问,字符流是以字符为单位,字节流是以字节为单位(一个字节8个bit),由此可知两种的处理对象不同,字节流能处理所有类型的数据,而字符流只能处理字符类型的数据。所以我们可以得到一个结论,那就是只要是处理纯文本数据,就优先考虑使用字符流,除此之外使用字节流。

然后就要说一说输入流和输出流。老实说,从学C语言那时候开始我就输入和输出,output和input很混乱也很不明白。需要不断去接触才更加能够牢记区别吧。输入呢一般是指从外部文件(如硬盘,键盘等)获取数据,而输出呢则是指从程序本身向外部输出数据(如写入文件,显示都屏幕上)。而输入流和输出流还有另一个区别,那就是对输入流只能进行读操作,而对输出流只能进行写操作。

说完这两个大分类,我们可以来了解下其中更详细的一些内容,看看一个类图吧

由继承图看出来,字符输入流Reader是所有的字符输入流的父类。PIpedReader主要是可以通过与其他线程建成的管道读取数据。

而InputStreamReader是一个连接字节流和字符流的桥梁,可以将字节流转变为字符流。

字符输出流Writer是所有的字符输出流的父类。其他子类分别与Reader的各个子类相对应。

输入字节流InputStream是所有的输入字节流的父类。ByteArrayInputStream、StringBufferInputStream、FileInputStream是分别从对应文件读入数据

而PipedInputStream 是从与其它线程共用的管道中读取数据。

输出字节流OutputSteam 是所有的输出字节流的父类。其他分别与InputSteam的子类相互对应。

整个IO类中除了字节流和字符流还包括字节和字符转换流。

OutputStreramWriter将输出的字符流转化为字节流

InputStreamReader将输入的字节流转换为字符流

将字节输出流转化为字符输出流Writer out=newOutputStreamWriter(newFileOutputStream(file));

将字节输入流变为字符输入流Reader read=newInputStreamReader(newFileInputStream(file));

那有一个问题,神恶魔时候才要用到转换流呢:当字节和字符之间有转换动作时和流操作的数据需要编码或者解码的时候。

以内容为输出输入目的地,使用内存操作流

ByteArrayInputStream 主要将内容写入内容

ByteArrayOutputStream  主要将内容从内存输出

内容操作流一般使用来生成一些临时信息采用的,这样可以避免删除的麻烦

合并流 SequenceInputStream

SequenceInputStream主要用来将2个流合并在一起,比如将两个txt中的内容合并为另外一个txt。

PushBackInputStream回退流:可以把读取进来的某些数据退回到数据缓冲区

BufferedReader只能接受字符流的缓冲区,因为每一个中文需要占据两个字节,所以需要将System.in这个字节输入流变为字符输入流,采用:

比较常用的是采用Scanner类来进行数据输入

Scanner sca = new Scanner(System.in);

在流操作中经常需要用到:和\  不推荐直接用,最好调用两个常量File.separator(\)与File.pathSeparator(:),这样处理的话跨平台操作会比较兼容

如果想在文件中换行的话,需要使用“\r\n”

java用io流存信息_Java io流的学习相关推荐

  1. java io 装饰者_Java IO 体系(一): 装饰者模式

    前言. IO中常见的使用方式 DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutput ...

  2. java io框架图_Java IO流体系继承结构图解析

    Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...

  3. java 更新文件内容吗_java Io流更新文件内容

    标签: package com.hp.io; import java.io.FileOutputStream; import java.io.IOException; public class Fil ...

  4. java流程图表示输入 输出_Java IO基础总结

    Java IO基础总结 Java中使用IO(输入输出)来读取和写入,根据数据走向可分为输入流和输出流,用户可以从输入流中中读取信息,但不能写它,相反,对输出流,只能往输入流写,而不能读它(输入流表示从 ...

  5. java io字符输出流_JAVA IO 字符输入流与输出流总结说明

    目录 OutputStreamWriter 用于向本地文件中写入数据 InputStreamReader 用于读取本地文件中的字节数据 FileReader 用于读取本地文件中的字节数据 FileWr ...

  6. java io读取文件_java io读取文件操作代码实例

    这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要分为字节读取和字符读取,字节读取可以一个一个 ...

  7. java+io体系结构图_Java IO 体系结构

    Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...

  8. java io 面试题_Java IO面试题及答案整理汇总

    说到Java开发,所有的java程序员都知道Java IO流,而且相信大家在具体的工作中也都会用到,但是其实很多朋友们并没有完全掌握java IQ流的内容,而且java IO在java 面试中也会考察 ...

  9. java io 装饰者_Java IO 装饰者模式

    装饰模式(Decorator) 装饰模式又名包装(Wrapper)模式. 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰模式通过创建一个包装对象,也就是装饰,来包裹真实的 ...

  10. java io删除文件_java IO 文件操作方法总结

    java IO 文件操作方法总结 对于输入输出的理解: 输入输出,以程序为参考点,外部数据进入程序,通过输入流完成.程序将数据给外部设备,通过输出流完成. 文件Io的操作 //获取文件 File fi ...

最新文章

  1. 深度学习目标检测详细解析以及Mask R-CNN示例
  2. 当微信小程序遇上TensorFlow:Server端实现补充
  3. hdu 5569(二维dp,水题)
  4. vue里碰到 $refs 的问题
  5. C#生成PDF文件中时,设置边框为虚线和隐藏显示单个或者多个边框。
  6. 利用opencv对图像和检测框做任意角度的旋转
  7. yarn报错:error An unexpected error occurred: “https://registry.yarnpkg.com/-/user/org.couchdb。。。
  8. 带你认识三种kafka消息发送模式
  9. cmake笔记(1)
  10. 最详细农行招聘面试经历
  11. 怀念偶像科比布莱恩特--------Kobe Bryant
  12. 一加3 android 8.0,一加3 android 8.0 启动uiautomator server失败
  13. Flutter实战之go_router路由组件入门指南
  14. 界面控件DevExpress WinForms皮肤编辑器的这个补丁,你了解了吗?
  15. itools官方中文版2014 v2.0.3.8_苹果同步软件
  16. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)六 在express中建立路由
  17. MatLab专用变量
  18. 《Spring Boot 实战派》--13.集成NoSQL数据库,实现Elasticsearch和Solr搜索引擎
  19. 【李开复】你有选择的权利(五)
  20. nessus在kali中的安装与详细使用

热门文章

  1. 华为主题锁屏壁纸换不掉_华为手机中的这些默认设置一定要改,不然会导致手机卡顿加快耗电...
  2. docker 部署 nacos2.x 镜像
  3. 仓库镜像源为清华_conda国内镜像修改(最新版)
  4. java filechannel 并发_java.nio中的Channel系列(2)-FileChannel与零拷贝原理
  5. list 如何判空以及为什么
  6. File.WriteAllText 写入TXT文件时不能正确换行只显示方块
  7. 如何使用命令行进行基本操作
  8. php使用到的函数记录一
  9. Inception介绍(MySQL自动化运维工具)
  10. iptables应用