------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

装饰设计模式:

当想要对已有对象进行功能增强时。可以定义类,将已经有的类传入,基于已经有的功能,并且提供增强的功能,那么自定义的类就是装饰类。

  • 两个基类:outputStream  inputStream ;
  • 缓冲区:Buffer+两个基类的名称

小技巧: 如何分辨字节流和字符流,就是字节流用byte[]操作, 字符流用char[] 操作

在字节流当中是对数据的最小操作,所以在写入操作的时候就不需要刷新操作。


【IO流的基本操作规律】

  1. 明确源和目的
    • 源:输入流, inputstream ,Reader
    • 目的:输出流 ,OutputStream , Writer
  2. 操作的数据是否是纯文本,
    1. 是:那么是字符流
    2. 不是:那么是字节流
    3. 当然字符流和字节流可以通过桥梁对象来引导
  3. 当体系明确以后,在明确是那个对象
    1. 我们可以通过设备来划分,
    2. 源:内存,键盘,硬盘
    3. 目的射门:内存,硬盘,控制台

使用缓冲区读写文件的思路:

  1. 1.通过两个基类。建立一个读写数据的流通道。因为我们在read(读取的时候是一个字节一个字节读取的可能有点慢,
  2. 建立一个缓冲区,通过底层流对象的rend()方法,把数据从硬盘一大批的存储在缓冲区当中,
  3. 接着就可以缓冲区读取读取数据了
  4. 写入数据就是读取数据的相反。

  • 代码演示:
//文件读缓冲区 BufferedInputStream bufin = new BufferedInputStream(new FileInputStream("文件地址")); //文件写的缓冲区 BufferedOutputStream bufout = new BufferedOutputStream(new FileOutputStream("写到的文件地址")); byte [] buf = new byte[1024]; int len = 0; //读取到缓冲区当中,返回值为读取的长度,然后呢读取指针指向下一个地址,如果读取的结束了就返回 -1 , //所以这里我反复的读取 while ((len = bufin.read(buf))!=-1) { //写入数据,一直写,如果流还没有关闭的话。就一直在文本里面接着写入到后面的数据,设置len是保证他写入的长度; bufout.write(buf,0,len); } //不要忘记关闭流

        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(二)的更多相关文章

  1. 黑马程序员- IO(Input- Output)(一)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- API包: Java.io.* 缘来: java通过操作数据对象是通过流的方式来创建的 作用: ...

  2. 黑马程序员:Java基础总结----GUI&网络&IO综合开发

    黑马程序员:Java基础总结 GUI&网络&IO综合开发   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络架构 C/S:Client/Server ...

  3. 黑马程序员——【Java高新技术】——代理

    ---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...

  4. 黑马程序员:Java基础总结----类加载器

    黑马程序员:Java基础总结 类加载器   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...

  5. 黑马程序员:轻松精通Java学习路线连载1-基础篇!

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  6. 黑马程序员:3分钟带你读懂C/C++学习路线

    随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移 ...

  7. 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具

        Java学习路线图引言:        黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...

  8. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  9. 黑马程序员:Java基础总结----泛型(高级)

    黑马程序员:Java基础总结 泛型(高级)   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...

随机推荐

  1. HDU-2551 竹青遍野

    http://acm.hdu.edu.cn/showproblem.php?pid=2551 妙用for循环. 竹青遍野 Time Limit: 2000/1000 MS (Java/Others)  ...

  2. 使用jenkins + python + selenium一步步搭建web自动化测试“框架”(1) - 各部件简介

    原先搭建过一个自动化测试框架,迷迷糊糊不求甚解,算是搭建了一个仅限于能用的.根本算不上框架的玩意儿. 现在回过头来好好看看究竟每一步是怎么联系起来的,是怎么运行起来的. 本次博客先说说各部件都是干什么 ...

  3. Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1105  Solved: 331[Submit][Statu ...

  4. 主流智能手机屏幕材质介绍 及 LCD闪屏现象分析

    TN            TN(Twisted Nematic) 即扭曲向列型面板,属于有源矩阵液晶显示器中的一种.由于TFT是主动式矩阵LCD可让液晶的排列方式具有记忆性,不会在电流消失后马上恢复 ...

  5. debmirror镜像站

    如何建立一个Debian镜像网站呢?在Debian的官方网站已经有专门的介绍: http://www.debian.org/mirror/ftpmirror 这是基于rsync软件的方法,网页也提供了 ...

  6. HTML5和CSS3不仅仅是两项新的Web技术标准

    HTML5和CSS3不仅仅是两项新的Web技术标准 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已 ...

  7. 使用VNC实现多用户登录linux系统

    vmare版本:12.0.0 build-2985596

  8. 在java项目中应用ueditor

    虽然百度ueditor的官网和文档都已经很详细了.但是自己还是记录下 自己使用uEditor的过程. 这是 他的官网 http://ueditor.baidu.com/website/  例子 文档什 ...

  9. asp.net中利用session对象传递、共享数据[session用法]

    下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值: 首先定义将一个文本值或单独一个值赋予session,如下: session[“name”]=textbox1.text ...

  10. 如何学会web前端开发

    如何学会web前端开发 http://jingyan.baidu.com/article/b7001fe17623970e7282dd0c.html http://www.yangqq.com/dow ...