------- android培训、java培训、期待与您交流! ----------
1:字符输入流(掌握)
(1)Reader -- FileReader 用于读取数据
(2)FileReader的使用步骤(掌握)
A:创建字符输入流对象
注意:在读取的时候,文件一定要存在
B:调用该对象的方法
int read()
int read(char[] chs)
C:释放资源
代码体现:
FileReader fr = new FileReader("fw.txt");
//方式1
int ch = 0;
while((ch=fr.read())!=-1)
{
System.out.print((char)ch);
}
//方式2
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1)
{
System.out.print(new String(chs,0,len));
}
fr.close();
(3)复制文本文件(掌握)
思路:
数据源:a.txt
从数据源读取数据
目的地:b.txt
写入到目的地
代码体现:
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");
//方式1
int ch = 0;
while((ch=fr.read())!=-1)
{
fw.write(ch);
}
//方式2
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1)
{
fw.write(chs,0,len);
}
fw.close();
fr.close();
(3)高效字符输入输出流(掌握)
Reader
|--FileReader
|--BufferedReader
String readLine();
Writer
|--FileWriter
|--BufferedWriter
void newLine();
带缓冲的流对象,包装类,装饰类。对类的功能进行增强。
(4)用高效流复制文本文件(掌握)
需求:
把d盘目录下的HelloWorld.java复制到e盘目录下的Copy.java中。
三种方式都要写出来。每一种写一个类里面。
(5)案例:
A:键盘录入学生信息排序并保存(理解)
B:遍历某个目录下所有的java文件把路径写入到一个文本文件中(掌握)
C:思考题
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,
并将原来文件的扩展名从.java改为.jad。(算法与编程)
2:装饰设计模式(理解)
(1)在使用类本身的功能基础上,可以对类的功能进行增强。
(2)装饰模式和继承的区别?
继承:
让代码看起来更臃肿,耦合性强。
装饰模式:
让代码看起来更灵活。
(3)模拟BufferedReader的使用。
(4)模拟LineNumberReader的使用。
3:预习字节流的使用。
完全可以自学。
InputStream
|--FileInputStream
|--BufferedInputStream
OutputStream
|--FileOutputStream
|--BufferedOutputStream
1:字节流
(1)字节流(掌握)
输入:
InputStream
|--FileInputStream
|--BufferedInputStream
输出:
OutputStream
|--FileOutputStream
|--BufferedOutputStream
(2)字节流写入数据(掌握)
基本步骤:
创建字节输出流对象
调用该对象的方法
释放资源
FileOutputStream fos = new FileOutputStream("fos.txt");
fos.write("hello,io,我又来了".getBytes());
//fos.flush();
fos.close();
(3)字节流读取数据(掌握)
基本步骤:
创建字节输入流对象
调用该对象的方法
释放资源
FileInputStream fis = new FileInputStream("fos.txt");
//方式1
int by = 0;
while((by=fis.read())!=-1)
{
System.out.print((char)by);
}
//方式2
byte[] bys = new byte[1024];
int len = 0;
while((len=fis.read(bys))!=-1)
{
System.out.print(new String(bys,0,len));
}
fis.close();
(4)案例:(掌握)
A:用字节流复制文本文件(了解)
B:用字节流复制图片
C:用字节流复制MP3
D:测试四种方式复制MP3
2:IO流的结构图(掌握)
3:IO流的操作规律(掌握)
A:文件 -- 文件
B:文件 -- 控制台显示
C:键盘录入 -- 文件
D:键盘录入 -- 控制台显示
4:案例(理解)
A:登录注册
B:购物
1:打印流(掌握)
(1)专门用于把数据进行输出。分为字节打印流和字符打印流。
(2)打印流的特点:(掌握)
A:可以写入多种数据类型的数据。
write
print
println
B:如果你开启了自动刷新,在使用println方法时,会自动刷新并换行。
C:是可以直接操作设备的流。
针对每个特点都有案例。
(3)案例(掌握)
A:键盘录入,写入文本文件。用打印流实现。
B:复制文本文件,用打印流实现。
2:对象流(理解)
(1)用于把对象当做流一样的方式使用,java提供了对象流。
ObjectInputStream
Object readObject()
ObjectOutputStream
void writeObject(Object obj)
(2)用对象流写入数据
对象想要被对象流操作,就必须实现序列化接口。
最好给出序列化id值。
(3)序列化(流):对象 -- 流
反序列化(流):流 -- 对象
3:Properties(掌握)
(1)它是用来处理属性文件的集合类。
(2)它的特殊方法(理解)
list:用打印流保存数据
load:传递最基本的字符或者字节流读取数据
举例:玩游戏的进度加载
store:传递最基本的字符或者字节流写入数据
举例:玩游戏的进度保存
(3)案例:(掌握)
查找某个文件中是否存在键为lisi的数据,如果有,把值改为50。
4:编码问题(理解)
(1)编码表:把字符数据用数据表示。
ASCII,ISO-8859-1,GBK,GB2312,UTF-8
(2)编码问题在流中如何体现:
在用流的时候,只有转换流是可以指定编码的。
字符流 == 字节流 + 编码表
FileWriter == FileOutputStream + GBK
(3)编码问题在字符串中的体现:
编码:把看得懂的变成看不懂的。
字符串 -- 字节数组
解码:把看不懂的变成看得懂的。
字节数组 -- 字符串