IO流(四)__流的操作规律总结
流的操作规律:
1.明确源和目的
源:InputStream Reader
目的:OutputStream Writer
2.明确数据是否是纯文本数据
源:是纯文本:Reader
否:InputStream
目的:是纯文本 Writer
否:OutputStream
到这里就可以明确需求中具体要使用哪个体系
3.名确具体的设备
源设备:
硬盘:File
键盘:System.in
内存:数组 缓存
网络:Socket流
目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
4.是否需要其他额外功能
(1)是否需要高效(缓冲区):是:及加上buffer
(2)转换
需求:1.复制一个文本文件。
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确具体的设备
源:
硬盘: File
目的:
硬盘:File
FileReader fr=new FileReader("a.txt")
FileWriter fw=new FiileWriter("b.txt")
4.需要额外功能
需要高效
BufferedReader bufr =new BufferedReader(new FileReader("a.txt"))
BufferedWriter bufw =new BufferedReader(new FileReader("b.txt"))
======================================================
需求2. 读取键盘录入信息,并写入到一个文件中
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确识别
源:
键盘:System.in
目的:
硬盘:File
InputStream in =System.in;
FileWriter fw =new FileWriter("b.txt")
这样做可以。将读取的字节数据转成字符串,再由字符流操作
4.需要额外的功能吗?
需要。转换。将字节流转成字符流因为明确的源是Reader,这样操作文本数据便捷
所以要将已有字节流转成字符流。使用字节转字符的对象。InputStreamReader
InputStreamReader isr=new InputStreamReader(System.in)
FileWriter fw=new FileWriter("b.txt")
还需要功能吗?
需要:想高效
BufferedReader bufr=new BufferedReader( new InputStreamReader(System.in))
BufferedWriter bufw=new BufferedWriter( new FileWriter("b.txt"))
=========================================
需求3.经一个文本文件数据显示在控制台上
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确具体设备
源:
硬盘:File
目的:
控制台:System.out
FileReader fr =new FileReader("a.txt")
OutputStream out=System.out
4.需要额外功能吗?
需要转换。
FileReader fr =new FileReader("a.txt")
OutputStreamWriter osw =new OutputStreamWriter(System.out)
=================================================
4.读取键盘录入数据,显示在控制台上
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确设备
源:
键盘:System.in
目的:
控制台: System.out
InputStream in=System.in;
OutputStream out =System.out;
4.明确额外功能
需要转换,因为都是字节流,但是操作的确实文本数据。
所以使用字符流操作起来干呢更加便捷。
InputStreamReader isr =new InputStreamReader(System.in);
OutputStreamReader osw =new OutStreamWriter(System.out)
======================================
需求5:将一个中文字符串数据按照指定的编码表写入到一个文本文件中
注意:既然需求中已经明确了指定的编码表动作
那就不可以使用FileWriter,因为FileWriter内部是使用默认的本地码
OutputStreamWriter接收一个字节输出流对象,既然操作文件,那么使用FileOutputStream
什么时候使用转换流?
1.源或者目的对应的设备是字节流。但是操作的确实文本数据,可以使用转换作为桥梁提高对文本操作的便捷
2.一旦操作文本设计具体的指定编码表时,必须使用转换流。
IO流(四)__流的操作规律总结的更多相关文章
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
第一讲 IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...
- IO流之流的操作规律
流的操作规律 IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢? 把IO流进行了规律的总结(四个明确): l 明确一:要操作的数据是数据源还是数据目的. 源:InputStream ...
- Java---IO加强(3)-IO流的操作规律
一般写关于操作文件的读取的几个通用步骤!!! 1.明确源和目的. 源:InputStream Reader 一定是被读取的. 目的:OutputStream Writer 一定是被写入的. 2.处理的 ...
- IO流的操作规律
输入流和输出流相对于内存设备而言. 将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出. 字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.在 ...
- Java转换流、缓冲流、流操作规律整理
转换流 1.1 OutputStreamWriter类 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字 ...
- Java第三阶段学习(五、流的操作规律、Properties流、序列化流与反序列化流、打印流、commons-IO jar包)
一.流的操作规律 四个明确: 明确一:明确要操作的数据是数据源还是数据目的地 源:InputStream Reader 目的地:OutputStream Writer 先根据需求明确是要读还是写 ...
- IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream
一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
- Java精选笔记_IO流(转换流、常用流、流操作规律、字符编码)
IO流 用来处理设备之间的数据传输,java对数据的操作是通过流的方式,java用于操作流的对象都在IO包中 按操作数据分为:字节流和字符流:按流向分为:输入流和输出流. 程序从输入流中读取数据,向输 ...
随机推荐
- jQuery_04之第三方、自定义
1.第三方插件: ①日期:layDate:不依赖于jquery 使用:html:<input class="laydate-icon"> css:引入laydat ...
- vuejs与服务器通信
vuejs与服务器通信 与服务器通信 Vue 实例的原始数据 $data 能直接用 JSON.stringify() 序列化.社区贡献了一个插件 vue-resource,提供一种容易的方式与 RES ...
- angular测试-Karma + Jasmine配置
首先讲一下大致的流程: 需要node环境,首先先要安装node,node不会?请自行搜索.版本>0.8 安装node完成之后先要测试下npm是否测试通过,如下图所示 首先看下目录结构 目录为:F ...
- WPF自定义控件与样式(14)-轻量MVVM模式实践
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. MVVM是WPF中一个非 ...
- 冒泡排序java代码
冒泡排序就是依次取出最大数,然后依次交换放到数组最后边. 直观写法: public long[] sort(long[] a){ int n = a.length - 1; // Step:1 选出最 ...
- 推荐20款基于 jQuery & CSS 的文本效果插件
jQuery 和 CSS 可以说是设计和开发行业的一次革命.这一切如此简单,快捷的一站式服务.jQuery 允许你在你的网页中添加一些真正令人惊叹的东西而不用付出很大的努力,要感谢那些优秀的 jQue ...
- [git]merge和rebase的区别
前言 我从用git就一直用rebase,但是新的公司需要用merge命令,我不是很明白,所以查了一些资料,总结了下面的内容,如果有什么不妥的地方,还望指正,我一定虚心学习. merge和rebase ...
- Jackson序列化和反序列化Json数据完整示例
Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...
- Hyperledger区块数据的访问
简介 本文介绍了访问Hyperledger区块数据的几种方法. REST API Hyperledger提供了多个REST API (https://hyperledger-fabric.readth ...
- ES6笔记(2)-- let的块级作用域
系列文章 -- ES6笔记系列 一.函数级作用域 我们都知道,在ES6以前,JS只有函数级作用域,没有块级作用域这个概念 没有块级作用域,有利有弊,利于方便自由,弊于作用域内的变量容易被共享,例如这个 ...