黑马程序员- IO(Input- Output)(一)
------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)(一)的更多相关文章
- 黑马程序员-IO(二)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 装饰设计模式: 当想要对已有对象进行功能增强时.可以定义类,将已经有的类传入,基于已经有的功能, ...
- 黑马程序员——JAVA基础之IO流FileReader,FileWriter
------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...
- 黑马程序员:Java基础总结----GUI&网络&IO综合开发
黑马程序员:Java基础总结 GUI&网络&IO综合开发 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络架构 C/S:Client/Server ...
- 黑马程序员:轻松精通Java学习路线连载1-基础篇!
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- 黑马程序员:Java基础总结----正则表达式
黑马程序员:Java基础总结 正则表达式 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import java.util.regex.*; 符合一定规 ...
- 黑马程序员——【Java高新技术】——代理
---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
- 黑马程序员:Java基础总结----类加载器
黑马程序员:Java基础总结 类加载器 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...
- 黑马程序员:Java基础总结----静态代理模式&动态代理
黑马程序员:Java基础总结 静态代理模式&动态代理 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public class Ts { ...
随机推荐
- constant
- 新一批电子商务解决方案和企业管理应用加入 VM Depot 中国站点
新一批电子商务解决方案和企业管理应用加入 VM Depot 中国站点. //电子商务平台助力您建设网店// 大约有 6 个最近更新的电子商务程序包已经登陆 VM Depot. 这不仅囊括了全球知 ...
- http Error 503 server unavailable
服务器的环境为: 系统:Windows server 2008 64位 数据库:Oracle 10g WEB应用服务:IIS 7.0+.Net Framework 4.0 无法打开服务元数据库路径“/ ...
- python 零散记录(七)(下) 新式类 旧式类 多继承 mro 类属性 对象属性
python新式类 旧式类: python2.2之前的类称为旧式类,之后的为新式类.在各自版本中默认声明的类就是各自的新式类或旧式类,但在2.2中声明新式类要手动标明: 这是旧式类为了声明为新式类的方 ...
- 《C语言程序设计现代方法》第2章 编程题
7 编写一个程序,要求用户输入一个美金数量,然后显示出如何使用最少的20美元.10美元.5美元和1美元来付款. 提示:将付款金额除以20,确定20美元的数量,然后从付款金额中减去20美元的总金额.对其 ...
- HDOJ/HDU 1087 Super Jumping! Jumping! Jumping!(经典DP~)
Problem Description Nowadays, a kind of chess game called "Super Jumping! Jumping! Jumping!&quo ...
- 研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)
一.适配器模式定义 将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作. 二.python 实现 import string import cP ...
- nyoj 1185 最大最小值【线段树最大值最小值维护】
最大最小值 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R ...
- nyoj 757 期末考试【优先队列+贪心】
期末考试 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣 ...
- pom.xml第一行报错
错误:Cannot detect Web Project version. Please specify version of Web Project through <version> ...