黑马程序员————IO流操作的基本规律和使用方法_io流操作的熟练应用-程序员宅基地

O流的操作规律

之所以要弄清楚这个规律,是因为流的对象太多,开发时不知道用哪个对象合适。

想要知道开发时用到哪个对象,只要通过四个明确即可。

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 FileWriter(copya.txt);

4.需要额外功能么?

需要高效

BufferedReader bufr=new BufferedReader(new FileReader(a.txt));

BufferedWriter bufw=new BufferedWriter(new FileWriter(copya.txt));

需求2:读取键盘录入信息,并写入到文本文件中

1.明确源和目的

源:InputStream Reader

目的:OutputStream Writer

    2.是否是纯文本

是,源是Reader,目的是Writer

    3.明确具体设备

源设备 键盘:System.in

目的设备 硬盘:file

InputStream in=System.in;

FileWriter fw=new FileWriter(a.txt);

4.需要额外功能

需要转换,将字节流转换成字符流,因为明确的源是Reader,这样操作文本数据便捷。

所以将已有的字节流转换成字符流,使用InputStreamReader

InputStreamReader isr=new InputStreamReader(System.in);

FileWriter fw=new FileWriter(a.txt);

还需要高效

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

BufferedWriter bufw=new BufferedWriter(ew FileWriter(a.txt));

需求3:将一个文本文件显示在控制台上

1.源和目的:

源:InputStream Reader

目的:OutputStream Writer

    2.是否是纯文本

是,源是Reader,目的是Writer

    3.明确具体设备

源设备 硬盘:file

目的设备 硬盘:System.out

FileReader fr=new FileReader(a.txt);

OutputStream os=System.out;

4.额外功能

需要转换:

FileReader fr=new FileReader(a.txt);

OutputStreamWriter osw=new OutputStreamWriter(new OutputStream(System.out));

需要高效:

BufferedReader bufr=new BufferedReader(new FileReader(a.txt));

BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));

需求4.读取键盘录入数据,显示在控制台上

    1.源和目的

源:InputStream Reader

目的:OutputStream Writer

    2.是否是纯文本

是,源是Reader,目的是Writer

    3.明确具体设备

源设备 键盘:System.in

目的设备 控制台:System.out

InputStream fr=System.in;

OutputStream os=System.out;

4.额外功能

需要转换

InputStreamReader isr=new InputSreamReader(System.in);

OutputStreamWriter isw=new OutputStreamWriter(System.out);

将其高效

BufferedReader bufr=new BufferedReader(new InputSreamReader(System.in));

BufferedWriter bufw=new BuffereWriter(new OutputStreamWriter(System.out));

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/feitianmao627/article/details/45673629

智能推荐

python追加文件_python 一直追加文件-程序员宅基地

文章浏览阅读2.1k次。#coding=utf-8# -*- coding: utf-8 -*-def read_to_write(read_path,write_path,IS_delete_first=False): dataSource = list() import os import sys print(sys.path) with open(read_path, e..._python 一直追加文件

【可能是全网最丝滑的LangChain教程】一、LangChain介绍_langchain入门指南pdf-程序员宅基地

文章浏览阅读1.1k次,点赞17次,收藏19次。主要是对LangChain的基本介绍和LangChain的使用场景描述。_langchain入门指南pdf

MySQL 5.5 安装方法 详细图解-程序员宅基地

文章浏览阅读56次。最近在做一个Java Web带有数据库的项目,用过SQL Server 2005,但是对它印象不太好因为安装的时候出错还恢复了系统,十分伤心,后来打算用MySQL 5.5.27使使看。 由于博客上传图片限制,下面的正文和与之配合的图解在附件word文档中安装环境:Windows 7 家庭普通版 [64bit ]版本信息:MySQL 5.5.27 [下载...

ResNet网络学习(一):对残差单元对理解-程序员宅基地

文章浏览阅读8.3k次。相比其他的网络结构,resnet的网络更深,网络更深对于深度学习来说就能学习到更多的东西,效果也更好。但是是不是网络越深,效果就一定更好呢?在论文中,作者提到分别用56层和20层的网络做训练和测试,更深的网络有更高的错误率。出现这种情况不是因为过拟合,而是因为深度学习过程中存在一个重要的问题:梯度爆炸和梯度消失深度残差网络就是为了解决这一个问题,这样一来,模型深度的增加才可以有效地..._残差单元

挑战Transformer,国产新架构RWKV,最新进展。。。。-程序员宅基地

文章浏览阅读16次。来源:量子位不走Transformer寻常路,魔改RNN的国产新架构RWKV,有了新进展:提出了两种新的RWKV架构,即Eagle(RWKV-5)和Finch(RWKV-6)。这两种序列模型以RWKV-4架构为基础,然后作了改进。新架构的设计进步包括多头矩阵值状态(multi-headed matrix-valued states)和动态递归机制(dynamic recurrence mech..._eagle and finch: rwkv with matrix-valued states and dynamic recurrence

1N5819HW-7-F相关参数介绍-程序员宅基地

文章浏览阅读557次。2019独角兽企业重金招聘Python工程师标准>>> ..._1n5819hw-7-f

随便推点

BranchCache在sharepoint2013使用-程序员宅基地

文章浏览阅读31次。BranchCache 是 Windows 7、Windows 8、Windows Server2008R2 和 Windows Server 2012 操作系统的一项功能,此功能可在本地分支机构的计算机上对来自文件和广域网 (WAN) 中 Web 服务器的内容进行缓存。在异地分布式 SharePoint Server 2013 环境中,BranchCache 可通过缓存用户从 SharePo...

ThinkPHP全行业小程序运营管理系统源码+一键生成小程序_thinkphp内核全行业小程序运营管理系统源码+自由diy布局+一键生成小程序.rar-程序员宅基地

文章浏览阅读58次。代理商管理:拥有底层源码系统,发展自己的代理商,列表清晰展示各代理商状态,详细设置对代理商账号信息、创建小程序的个数、系统到期时间等进行管理。消息通知:设置商品状态通知、成团通知、预约预定通知、系统表单通知、会员卡开卡通知等消息模板,配置商家收发消息邮箱实现邮件通知。积分签到、积分兑换商城、拼团、店内点餐、手机客服等插件可用,满足各种行业场景营销需求,助力客户小程序营销推广。无需代码编程,无需技术基础,简单的操作页面,清晰的模块分划,详尽的功能组件,让您短时间即可轻松玩转小程序。_thinkphp内核全行业小程序运营管理系统源码+自由diy布局+一键生成小程序.rar

php-resque 极简php消息队列-程序员宅基地

文章浏览阅读271次。安装首先这货需要在linux下跑,非得用windows就别看了,也不是不能装,费劲且性能渣得有composer,嫌慢的也拉倒吧,别看了,本文不介绍没有composer怎么办安装composer也不是本文要点,在ubuntu(其实为了不折腾QQ我装的是deepin)中就是一行命令php...

python中科学技术法、int转字节数据、从二进制文件读取小数float_python 读取二进制转小数-程序员宅基地

文章浏览阅读622次。1.python中小数按科学技术法的形式输出:print("%e" % number)2.int.from_bytes(bytes, bytesorder='big'/'little', signed=False)参数解释:bytes是需要解析的字节;bytesorder是说明要解释的字节中左边是高位还是右边是高位,big左边是高位,little左边是低位;signed表示当前解析的是否是有符号数。int.to_bytes()是int.from_bytes的逆过程,把十进制整数,转换为byt_python 读取二进制转小数

32位和64位系统中数据类型区别_在android32和android64位中unsigned long数值有什么不同-程序员宅基地

文章浏览阅读1.6k次。c语言中基本数据类型的长度:32位下:char :1个字节(不变)*(指针变量): 4个字节(32位机的寻址空间是4个字节。同理64位编译器)(变化)short int : 2个字节(不变)int: 4个字节(不变)unsigned int : 4个字节(不变)float: 4个字节(不变)double: 8个字节(不变)_在android32和android64位中unsigned long数值有什么不同

python docx 字体设置_python docx 中文字体设置-程序员宅基地

文章浏览阅读495次。最近用到了docx生成word文档,docx本身用起来很方便,自带的各种样式都很好看,美中不足的就是对中文的支持不够好。在未设置中文字体的时候,生成的文档虽然可以显示中文,但是笔画大小不一,很难看。解决办法:首先创建一个文档,要先声明一个document:from docx import Documentdocument = Document()docx内置的样式都可以通过document.sty..._python docx normal

推荐文章

热门文章

相关标签