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

API包: Java.io.*

缘来:

java通过操作数据对象是通过流的方式来创建的

作用:

IO流就是用来设备之间的数据传输

流按照数据分为两种流:字符流,字节流

按照输入方式分为:输入流。和输出流。

一、常用的两个基类:

字节流抽象基类 InputStream,OutputStream
字符流抽象基类 Reader, Writer.

注意:由上面四个类派生出来的子类,都用父类作为后缀来命名类名;


二、开始操作:我们用读写文件来来演练:

思路:1.如果要写数据,总得要知道写在哪里吧?

FileWriter fw= new FileWriter("写入地址");

2.找到地址我们就开始写了

fw.write(“数据内容”);//注意这里我们才写到流里面

3.我们要刷新一下,把他写入指定的文件当中。

fw.flush();//刷新

fw.close();  //关闭流对象  ,

注意:Close()每次关闭会调用一次flush()方法;

那么:文件的读取就会和写入相反嘛;

FileReader fr = new FileReader(“读取位置”);

fr.read(“读取到缓冲区当中。一般可以用”);//读取数据

fr.colee();//关闭读取流

我们看看在硬盘上的处理方式。


  • 异常处理方式:
//创建流对象
FileWriter fw=null;
try
{
//创建数据写入的目的地。
fw= new FileWriter("zhulang.txt"); //那么开始写了
fw.write("你好我是小帅哥");
} catch (IOException e)
{
System.out.println("输出IO异常"+e.toString());
}
finally
{
try
{
if (fw!= null)
{
//如果文件不存在;异常
fw.close();
}
} catch (IOException e2)
{
System.out.println("异常"+e2.toString());
}
}

 

优化:上面的做法总觉得不是很好。读写速度就很慢。Java给我们提供了缓冲区的方法

出现的原因:那么就是为了提高流的读写效率。Buffered类

那么我们可以推导出我们在创建缓冲区的时候我们是不是就要创建流对象。

ReadLine()原理: 无论是读取一行。获取多个字符,最终得原理都是在硬盘上面一个个的读取,最终还是使用的还是read()方法,一次次的读取。只是在缓冲区当中增加了特别的终止符:

那么来看看我自己手写的ReadLine

/**
*手写RradLine
*/
class MyBufferedReader
{
FileReader fr = null;
//自己手写ReanLine
public MyBufferedReader(FileReader fr)
{
this.fr= fr;
} public String myReadLine() throws IOException
{
//创建一个字符串,用于接受返回
StringBuffer stub = new StringBuffer();
//那么开始一个一个的读取
int ch = 0; while ((ch=fr.read())!=-1)
{
if (ch=='\r')
continue;
if (ch=='\n')
return stub.toString();
else
stub.append((char)ch);
} return null; }
}

黑马程序员- IO(Input- Output)(一)的更多相关文章

  1. 黑马程序员-IO(二)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 装饰设计模式: 当想要对已有对象进行功能增强时.可以定义类,将已经有的类传入,基于已经有的功能, ...

  2. 黑马程序员——JAVA基础之IO流FileReader,FileWriter

    ------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流  IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...

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

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

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

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

  5. 黑马程序员:Java基础总结----正则表达式

    黑马程序员:Java基础总结 正则表达式   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import  java.util.regex.*; 符合一定规 ...

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

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

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

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

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

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

  9. 黑马程序员:Java基础总结----静态代理模式&动态代理

    黑马程序员:Java基础总结 静态代理模式&动态代理   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public  class  Ts {   ...

随机推荐

  1. 代码演示C#中string和StingBuilder内存中的区别

    关于 string和StringBuilder的区别参考MSDN.本文用程序演示它们在内存中的区别,及其因此其行为不同. //Demo  string memory model namespace C ...

  2. Codevs_1048_石子归并_(动态规划)

    描述 http://codevs.cn/problem/1048/  1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold       题目描述 Des ...

  3. Apache Struts 安全措施绕过漏洞(CVE-2013-4310)

    漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62584 CVE(CAN) ID: CVE-2013-4310 Struts2 是 ...

  4. team geek

    1. 转载自http://book.douban.com/review/6007037/,版权归丸子(^.^)v所有. New Google employees (we call “Nooglers” ...

  5. ZOJ --- 3516 Tree of Three

    Tree of Three Time Limit: 2 Seconds      Memory Limit: 65536 KB Now we have a tree and some queries ...

  6. codeforces Codeforces 650A Watchmen

    题意:两点(x1,y1), (x2,y2)的曼哈顿距离=欧几里得距离 也就是:x1=x2或y1=y2,再删除重合点造成的重复计数即可. #include <stdio.h> #includ ...

  7. 使用aespython进行ECB加解密示例

    CBC示例: from aespython import cbc_mode, key_expander, aes_cipher key = 'MluJMEZegVmrnWDaBiG1j7lqpkxNH ...

  8. Java设计模式之装饰模式趣谈

    本文由码农网 – 鲁阿皓原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 前情提要:http://blog.csdn.net/baidu_30889437/article/details/ ...

  9. 【LeetCode】Binary Tree Level Order Traversal II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  10. VirtualBox检查更新失败解决办法

    5.0————>5.1的更新: 1.VirtualBox5.0检查更新失败 2.官网下载最新版本 3.安装最新版本到原来旧版本的路径下 关键的地方来了:我可是担心坏了,怕安装新版本,会破坏原来已 ...