java用io流存信息_Java io流的学习
最近几天仔细学了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流的学习相关推荐
- java io 装饰者_Java IO 体系(一): 装饰者模式
前言. IO中常见的使用方式 DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutput ...
- java io框架图_Java IO流体系继承结构图解析
Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...
- java 更新文件内容吗_java Io流更新文件内容
标签: package com.hp.io; import java.io.FileOutputStream; import java.io.IOException; public class Fil ...
- java流程图表示输入 输出_Java IO基础总结
Java IO基础总结 Java中使用IO(输入输出)来读取和写入,根据数据走向可分为输入流和输出流,用户可以从输入流中中读取信息,但不能写它,相反,对输出流,只能往输入流写,而不能读它(输入流表示从 ...
- java io字符输出流_JAVA IO 字符输入流与输出流总结说明
目录 OutputStreamWriter 用于向本地文件中写入数据 InputStreamReader 用于读取本地文件中的字节数据 FileReader 用于读取本地文件中的字节数据 FileWr ...
- java io读取文件_java io读取文件操作代码实例
这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要分为字节读取和字符读取,字节读取可以一个一个 ...
- java+io体系结构图_Java IO 体系结构
Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...
- java io 面试题_Java IO面试题及答案整理汇总
说到Java开发,所有的java程序员都知道Java IO流,而且相信大家在具体的工作中也都会用到,但是其实很多朋友们并没有完全掌握java IQ流的内容,而且java IO在java 面试中也会考察 ...
- java io 装饰者_Java IO 装饰者模式
装饰模式(Decorator) 装饰模式又名包装(Wrapper)模式. 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰模式通过创建一个包装对象,也就是装饰,来包裹真实的 ...
- java io删除文件_java IO 文件操作方法总结
java IO 文件操作方法总结 对于输入输出的理解: 输入输出,以程序为参考点,外部数据进入程序,通过输入流完成.程序将数据给外部设备,通过输出流完成. 文件Io的操作 //获取文件 File fi ...
最新文章
- CentOS7安装配置VSFTP
- Java多线程学习笔记之二缓存
- python3基础知识梳理(一)
- Swift监听网络状态
- python菜鸟工具-终于清楚python菜鸟入门教程
- Java VisualVM插件地址
- 【原】关于ActiveX插件小项目总结
- NoNode for /hbase/hbaseid解决方案
- mac mysql 重设密码_Mac下忘记mysql密码重新设置密码的图文教程
- 视频PPT互动问答丨数据库技术前沿的创新与实践专题
- 第7章 比高斯更快的计算
- python aop编程_学习笔记: AOP面向切面编程和C#多种实现
- 数据库课设——DMS(高校宿舍管理系统)
- 整车EMC正向开发及仿真
- SpringBoot调优
- Angular 三目运算符
- mysql高效查询_mysql 高效率查询背景
- MATLAB-APP编程
- 尝试用visio画个等边三角形
- UWB高精度定位落地:中大型区域动态人员精细网格化管理
热门文章
- 去掉a标签下划线_编辑器、HTML基础、编码、基础标签
- 关于Lambda表达式的简单语法理解,有参无参,有无返回值的格式的理解,仅限编程新手
- android封装全局调用的toast_自定义Toast,解决系统Toast存在的问题
- lstm 变长序列_Pytorch 是如何处理变长序列的
- php跟python效率_python为何效率慢点?PHP跟Python的解释器都是C写的,PHP为什么能快点?...
- c语言中rm无法删除文件夹,rm:无法删除'-rf':没有这样的文件或目录
- html图片滚动暂停,怎么设置鼠标悬停时滚动的图片或文字停止?
- 日本将推出“隐形列车”,你要去体验一番吗?
- MySQL 5.6版本二进制包多实例安装
- flex与j2ee的结合(flex+Spring)