黑马程序员- 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 { ...
随机推荐
- POJ_3046_Ant_Counting_(动态规划,多重集组合数)
描述 http://poj.org/problem?id=3046 n种蚂蚁,第i种有ai个,不同种类的蚂蚁可以相互区分,但同一种类的蚂蚁不能相互区分,从这些蚂蚁中取出s,s+1,s+2,...,b- ...
- [C# 网络编程系列]专题十:实现简单的邮件收发器
转自:http://www.cnblogs.com/zhili/archive/2012/09/24/2689892.html 引言: 在我们的平常工作中,邮件的发送和接收应该是我们经常要使用到的功能 ...
- HDU-1335 Basically Speaking
http://acm.hdu.edu.cn/showproblem.php?pid=1335 Basically Speaking Time Limit: 2000/1000 MS (Java/Oth ...
- Unity 中关于 BuildSetting 中 “Optimize Mesh Data” 选项的“坑”
Unity 在底层默认希望为你做尽可能多的优化,降低使用门槛,比如 BuildSetting 中的 Optimize Mesh Data 选项就是一个典型的例子. 这个选项到底有什么用呢?文档描述为: ...
- .net 码农转战 iOS - 初探
好久没写博客了,之前还打算把毕业设计中涉及到的两个算法拿出来说说(脸型分析 + 声音分析),博文都写了一半了,后来实在太忙了,那篇随笔也就沉在草稿列表中没动过. 我原先是专职 .net 开发的,在公司 ...
- IOS开发之内存管理--dealloc该写些什么
在非ARC开发环境中,dealloc是类释放前,清理内存的最后机会.到底那些变量和属性该释放呢,一些特殊的类(nstimer,observer)该怎么释放.需要注意的是不释放会引起内存泄露,过度释放也 ...
- Android开发之50个常见实用技巧——活用布局
第一章.活用布局 Hack1. 使用weight属性实现视图的居中显示 ①合用weightSum属性和layout-weight属性 解决问题,如:居中显示按钮,并占据父视图的50%: 代码如: & ...
- MySql中having字句对组记录进行筛选使用说明
having字句可以让我们筛选成组后的各种数据 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前 ...
- Java编程性能优化一
转自:http://my.oschina.net/xianggao/blog/77224 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著 ...
- LINQ如何递归子控件
private void SetTextReadOnly(Control ctr, bool blReadOnly) { ctr.Controls.Cast<Control>().Sele ...