黑马程序员-IO(二)
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
装饰设计模式:
当想要对已有对象进行功能增强时。可以定义类,将已经有的类传入,基于已经有的功能,并且提供增强的功能,那么自定义的类就是装饰类。

- 两个基类:outputStream inputStream ;
- 缓冲区:Buffer+两个基类的名称
小技巧: 如何分辨字节流和字符流,就是字节流用byte[]操作, 字符流用char[] 操作
在字节流当中是对数据的最小操作,所以在写入操作的时候就不需要刷新操作。
【IO流的基本操作规律】
- 明确源和目的
- 源:输入流, inputstream ,Reader
- 目的:输出流 ,OutputStream , Writer
- 操作的数据是否是纯文本,
- 是:那么是字符流
- 不是:那么是字节流
- 当然字符流和字节流可以通过桥梁对象来引导
- 当体系明确以后,在明确是那个对象
- 我们可以通过设备来划分,
- 源:内存,键盘,硬盘
- 目的射门:内存,硬盘,控制台
使用缓冲区读写文件的思路:
- 1.通过两个基类。建立一个读写数据的流通道。因为我们在read(读取的时候是一个字节一个字节读取的可能有点慢,
- 建立一个缓冲区,通过底层流对象的rend()方法,把数据从硬盘一大批的存储在缓冲区当中,
- 接着就可以缓冲区读取读取数据了
- 写入数据就是读取数据的相反。
- 代码演示:
bufin.close();
bufout.close();
读写文件
一个流被定义为一个数据序列。输入流用于从源读取数据,输出流用于向目标写数据。
下图是一个描述输入流和输出流的类层次图。

【读取键盘的录入】
system.out:标准输出流 –> 对应的是标准的输出设备:一般就是显示器
system.in: 标准的输入流->对应的一般就是输入设备
从控制台获取字符串的方法:
思路:
1.在我查看api文档的时候。查阅得控制太的输入是一个字节流。
2.既然是字节流。其实我们是可以用InputStream衍生出来的类。去读取的。但是就是麻烦。
3.所以我们可以把字节流引入到字符流对象当中,我们就可以用readnLine方法了。实现方式如下面
//创建键盘录入对象,键盘录入的是一个字节流。那么我们可以把他转换成为字符流,
InputStream in = System.in;
//创建一个字节流导向字符流的桥梁
InputStreamReader isReader = new InputStreamReader(in); //创建一个字流的缓冲区
BufferedReader buf = new BufferedReader(isReader); String line = null;
while((line = buf.readLine())!=null)
{
if("over".equals(line))
{
//如果用户输入的是的over那么结束录入功能。
break;
}
System.out.println(line); }
黑马程序员-IO(二)的更多相关文章
- 黑马程序员- IO(Input- Output)(一)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- API包: Java.io.* 缘来: java通过操作数据对象是通过流的方式来创建的 作用: ...
- 黑马程序员:Java基础总结----GUI&网络&IO综合开发
黑马程序员:Java基础总结 GUI&网络&IO综合开发 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络架构 C/S:Client/Server ...
- 黑马程序员——【Java高新技术】——代理
---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...
- 黑马程序员:Java基础总结----类加载器
黑马程序员:Java基础总结 类加载器 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...
- 黑马程序员:轻松精通Java学习路线连载1-基础篇!
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- 黑马程序员:3分钟带你读懂C/C++学习路线
随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移 ...
- 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具
Java学习路线图引言: 黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...
- 黑马程序员—C语言的函数、数组、字符串
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
随机推荐
- POJ_3181_Dollar_Dayz_(动态规划,完全部分和,完全背包)
描述 http://poj.org/problem?id=3181 FJ有n元钱,有k种商品,各为1,2,...,k-1,k元,问有多少种花掉这n元钱的方法. Dollar Dayz Time L ...
- sql server 清除日志
SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消: (SQL2005) Backup Log DNNam ...
- 【转】Android:Animation的简单学习--不错
原文网址:http://blog.csdn.net/huangbiao86/article/details/6683665 Animation动画效果.提供了一系列的动画效果,可以应用大多数 的控件. ...
- Remarks on a preprint
Page 2 Line 1, "reads" should be "read". Page 2 Line 5, "are initial veloci ...
- HDOJ --- 2151 Worm
Worm Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Linux创建新用户以及useradd adduser的区别
从阿里云那弄了个机子玩玩,系统用的是Ubuntu12.04.刚等上去时候是用root登录的,首先想到的就是创建一个用户. 使用 useradd myname 发现/home目录下没有myname的家目 ...
- pyhton 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本
最近看到一个网站, 欧拉计划.挺好玩,都是一些算法题.这是本站:http://projecteuler.net/problems 这个是中文站:http://pe.spiritzhang.com/ 下 ...
- 页面与母版页面的asp:ContentPlaceHolder不匹配
问题描述:The page has one or more <asp:Content> controls that do not correspond with <asp:Conte ...
- selenium webdriver(4)---模拟鼠标键盘操作
webdriver提供Actions来模拟鼠标悬浮.拖拽和键盘输入等操作,详细代码见org.openqa.selenium.interactions.Actions.本文通过几个实例来说明Action ...
- Android学习笔记(九)一个例子弄清Service与Activity通信
上一篇博文主要整理了Service的创建.绑定过程,本篇主要整理一下Service与Activity的通信方式.包括在启动一个Service时向它传递数据.怎样改变运行中的Service中得数据和侦听 ...