黑马程序员—学习java基础8日志
2014-09-10 13:34
330 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
IO流常用基类
字符流和字节流。
字节流两个基本类:
InputStream OutputStream
字符流两个基本类:
Reader Writer
注:由这四个类派生出来的子类名字都是以其父类名作为子类名的后缀。
如:InputString的子类FileInputString
Reader的子类FileReader
一,1,字符流的特点。
数据的最常见体现形式是:文件
2,IO流异常处理信息:
3,对已有文件的续写:
4,读出流。Reader:
流操作文件的原理图:
5,字符流的缓冲区:
缓冲区的出现是为了提高流的操作效率而出现的。
对应类:BufferedWriter BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。
1, 在创建缓冲区之前,必须要要有流对象。
该缓冲区中提供了一个跨平台的换行符。newLine();
2,字符读取流缓冲区:
该缓冲区提供了一个一次读一行的方法 readLine
当返回null时,表示读到文件末尾。
readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。
readeLine原理图:
6,带行号的缓冲区对象 setLineNumber() getLineNumber()
7,装饰和继承:
MyReader//专门用于读取数据的类。
|--MyTextReader
|--MyBufferTextReader
|--MyMeriaReader
|--MyBufferMeriaReader
|--MyDataReader
|--MyBufferDataReader
class MyBufferReader
{
MyBufferReader(MyTextReader text)
{}
MyBufferReader(MyMediaReader media)
{}
}
上面这个类扩展性很差。
找到其参数的共同类型。通过多态的形式。可以提高扩展性。
class MyBufferReader extends MyReader
{
private MyReader r;
MyBufferReader(MyReader r)
{}
}
优化体系变为:
MyReader//专门用于读取数据的类。
|--MyTextReader
|--MyMeriaReader
|--MyDataReader
|--MyBufferReader
装饰模式比继承要灵活。避免了继承体系臃肿。
而且降低了类于类之间的关系。
装饰类因为增强已有对象,具备的功能额已有的是相同的,只不过提供了更强的功能。
所以装饰类和被装饰类通常是属于一个体系中的。
二,字节流:InputStream(读取) OutputStream(写入)
1,FileInputStream
FileOutpurStream
缓冲区:
BufferedInputStream
BufferedOutputStream
通过键盘录入一行数据并打印大写,发现就是读一行数据的原理。也就是reanLine方法
readLine方法是字符流BufferedReader类中的方法。
而键盘录入的read方法是字节流InputStream的方法。
InputStreamReader 是字节流通向字符流的桥梁。
OutputStreamWriter 是字符流通向字节流的桥梁。
System.out:对应的是标准输出设备:控制台。
System.in:对应的是标准输入设备:键盘。
2,流操作的基本规律:
通过三个明确来完成:
1,明确源和目的。
源:输入流 InputStream Reader
目的:输出流 OutputSteam Writer
2,操作的数据是否是纯文件。
是:字符流
不是:字节流
3,当体系明确后,在明确要使用哪个具体的对象。通过设备来区分:
源设备:内存,硬盘,键盘。
目的设备:内存,硬盘,控制台。
判断示例: 将一个文本文件中的数据存储到另一个文件中。就是复制文件。
源:因为是源,所以使用读取流。InputStream Reader
是不是操作文件?
是:这时就可以选择Reader 这样体系就明确了
接下来明确要使用该体系中的那个对象。
明确设备:硬盘,上的一个文件。
Reader体系中可以操作文件的对象是FileReader
FileReader fr=new FileReader("a.txt");
是否需要提高效率?是:加入Reader体系中缓冲区 BufferedReader
BufferedReader bufr=new BufferedReader(fr);
目的:OutputStream Writer
是否是纯文本。
是:Writer
设备:硬盘,上的一个文件
Writer体系中可以操作文件的对象FileWriter
FileWriter fw=new FileWriter("b.txt");
是否需要提高效率?是:加入Writer体系中缓冲区 BufferedWriter
BufferedWriter bufw=new BufferedWriter(fw);
字节流操作示例:
3,/*,需求:将键盘录入的数据保存到一个文件中。
这个需求中有源和目的都存在。那么分别分析
源:InputSteram Reader
是不是纯文本?是:Reader
设备:键盘。对应的对象时System.in
不是选择Reader吗?System.in对应的不是字节流吗?
为了操作键盘的文本数据方便。转成字符流按照字符串操作是最方便的。
所以既然明确了Reader,那么就将System.in转换成Reader
用了Reader体系中转换流,InputStreamReader
InputStreamReader isr=new InputStreamReader(System.in);
需要提高效率吗?需要:BufferedReader
BufferedReader bufr=new BufferedReader(isr);
目的:OutpurStream Writer
是否是纯文本?是:Writer
设备:硬盘。一个文件。使用FileWriter
FileWriter fw=new FileWriter("c.txt");
需要提高效率吗?需要:BufferedWriter
BufferedWriter bufw=new BufferedWriter(fw);*/
代码体现:
IO流常用基类
字符流和字节流。
字节流两个基本类:
InputStream OutputStream
字符流两个基本类:
Reader Writer
注:由这四个类派生出来的子类名字都是以其父类名作为子类名的后缀。
如:InputString的子类FileInputString
Reader的子类FileReader
一,1,字符流的特点。
数据的最常见体现形式是:文件
2,IO流异常处理信息:
3,对已有文件的续写:
4,读出流。Reader:
流操作文件的原理图:
5,字符流的缓冲区:
缓冲区的出现是为了提高流的操作效率而出现的。
对应类:BufferedWriter BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。
1, 在创建缓冲区之前,必须要要有流对象。
该缓冲区中提供了一个跨平台的换行符。newLine();
2,字符读取流缓冲区:
该缓冲区提供了一个一次读一行的方法 readLine
当返回null时,表示读到文件末尾。
readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。
readeLine原理图:
6,带行号的缓冲区对象 setLineNumber() getLineNumber()
7,装饰和继承:
MyReader//专门用于读取数据的类。
|--MyTextReader
|--MyBufferTextReader
|--MyMeriaReader
|--MyBufferMeriaReader
|--MyDataReader
|--MyBufferDataReader
class MyBufferReader
{
MyBufferReader(MyTextReader text)
{}
MyBufferReader(MyMediaReader media)
{}
}
上面这个类扩展性很差。
找到其参数的共同类型。通过多态的形式。可以提高扩展性。
class MyBufferReader extends MyReader
{
private MyReader r;
MyBufferReader(MyReader r)
{}
}
优化体系变为:
MyReader//专门用于读取数据的类。
|--MyTextReader
|--MyMeriaReader
|--MyDataReader
|--MyBufferReader
装饰模式比继承要灵活。避免了继承体系臃肿。
而且降低了类于类之间的关系。
装饰类因为增强已有对象,具备的功能额已有的是相同的,只不过提供了更强的功能。
所以装饰类和被装饰类通常是属于一个体系中的。
二,字节流:InputStream(读取) OutputStream(写入)
1,FileInputStream
FileOutpurStream
缓冲区:
BufferedInputStream
BufferedOutputStream
通过键盘录入一行数据并打印大写,发现就是读一行数据的原理。也就是reanLine方法
readLine方法是字符流BufferedReader类中的方法。
而键盘录入的read方法是字节流InputStream的方法。
InputStreamReader 是字节流通向字符流的桥梁。
OutputStreamWriter 是字符流通向字节流的桥梁。
System.out:对应的是标准输出设备:控制台。
System.in:对应的是标准输入设备:键盘。
2,流操作的基本规律:
通过三个明确来完成:
1,明确源和目的。
源:输入流 InputStream Reader
目的:输出流 OutputSteam Writer
2,操作的数据是否是纯文件。
是:字符流
不是:字节流
3,当体系明确后,在明确要使用哪个具体的对象。通过设备来区分:
源设备:内存,硬盘,键盘。
目的设备:内存,硬盘,控制台。
判断示例: 将一个文本文件中的数据存储到另一个文件中。就是复制文件。
源:因为是源,所以使用读取流。InputStream Reader
是不是操作文件?
是:这时就可以选择Reader 这样体系就明确了
接下来明确要使用该体系中的那个对象。
明确设备:硬盘,上的一个文件。
Reader体系中可以操作文件的对象是FileReader
FileReader fr=new FileReader("a.txt");
是否需要提高效率?是:加入Reader体系中缓冲区 BufferedReader
BufferedReader bufr=new BufferedReader(fr);
目的:OutputStream Writer
是否是纯文本。
是:Writer
设备:硬盘,上的一个文件
Writer体系中可以操作文件的对象FileWriter
FileWriter fw=new FileWriter("b.txt");
是否需要提高效率?是:加入Writer体系中缓冲区 BufferedWriter
BufferedWriter bufw=new BufferedWriter(fw);
字节流操作示例:
3,/*,需求:将键盘录入的数据保存到一个文件中。
这个需求中有源和目的都存在。那么分别分析
源:InputSteram Reader
是不是纯文本?是:Reader
设备:键盘。对应的对象时System.in
不是选择Reader吗?System.in对应的不是字节流吗?
为了操作键盘的文本数据方便。转成字符流按照字符串操作是最方便的。
所以既然明确了Reader,那么就将System.in转换成Reader
用了Reader体系中转换流,InputStreamReader
InputStreamReader isr=new InputStreamReader(System.in);
需要提高效率吗?需要:BufferedReader
BufferedReader bufr=new BufferedReader(isr);
目的:OutpurStream Writer
是否是纯文本?是:Writer
设备:硬盘。一个文件。使用FileWriter
FileWriter fw=new FileWriter("c.txt");
需要提高效率吗?需要:BufferedWriter
BufferedWriter bufw=new BufferedWriter(fw);*/
代码体现:
相关文章推荐
- 黑马程序员—学习java基础9日志
- 黑马程序员 java基础 继承thread多线程学习日志
- 黑马程序员—学习java基础10日志
- 黑马程序员——JAVA基础知识学习日志(一)
- 黑马程序员——黑马学习日志之三 Java基础03
- 黑马程序员——黑马学习日志之一 Java基础01
- 黑马程序员 java基础 实现runnable接口问题 学习日志
- 黑马程序员—学习java基础5日志
- 黑马程序员 java基础 监听事件相关问题学习日志
- 黑马程序员 java基础 连接数据库学习日志
- 黑马程序员——java基础:异常学习日志
- 黑马程序员--java基础 GUI画图学习日志
- 黑马程序员—学习java基础6日志
- 黑马程序员——黑马学习日志之四 Java基础——数组
- 黑马程序员—学习java基础4日志
- 黑马程序员_毕向东_Java基础视频教程第十八天-IO流---学习笔记
- 黑马程序员--Java基础学习第四天
- 黑马程序员--Java基础学习第五天
- java基础视频25days(毕老师)学习日志(day11、day12、day13)
- 黑马程序员--Java基础学习第十四天