1:字符流(掌握)
Reader
|--InputStreamReader
|--FileReader
|--BufferedReader
Writer
|--OutputStreamWriter
|--FileWriter
|--BufferedWriter
针对文本文件这样的数据操作。
基本的读取和基本的写入,单独使用也是要求掌握的。
掌握:(5种方式)
把c:\\a.txt复制到d:\\b.txt中。
(1)FileWriter写入数据
操作步骤:
A:创建字符输出流对象
B:调用对象的write()方法
C:释放资源
代码体现:
FileWriter fw = new FileWriter("fw.txt");
fw.write("hello,IO");
//fw.flush();
fw.close();
几个小问题?
A:创建字符输出流对象做了那几件事情?
B:为什么要flush()?
C:为什么要close()?
D:flush()和close()的区别?
E:怎么实现换行?
F:怎么实现追加写入?
G:文件不存在,会创建一个。文件如果存在,到底是重新创建,还是把内容给清空?
(2)FileReader读取数据
操作步骤:
A:创建字符输入流对象
B:调用对象的read()方法
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(String.valueOf(chs,0,len));
}
fr.close();
(3)复制文本文件
数据源:
看用那种类型的流,读取数据。
目的地:
看用那种类型的流,写出数据。
案例:
把当前项目路径下的Demo.txt复制到d盘目录下的Copy.txt中。
代码体现:
方式1:
FileReader fr = new FileReader("Demo.txt");
FileWriter fw = new FileWriter("d:\\Copy.txt");
int ch = 0;
while((ch=fr.read())!=-1) {
fw.write(ch);
}
fw.close();
fr.close();
方式2:
FileReader fr = new FileReader("Demo.txt");
FileWriter fw = new FileWriter("d:\\Copy.txt");
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1) {
fw.write(chs,0,len);
}
fw.close();
fr.close();
2:转换流(理解)
InputStreamReader isr = new InputStreamReader(System.in);
InputStreamReader isr = new InputStreamReader(new FileInputStream(...));
OutputStreamWriter osw = new OutputStreamWriter(System.out);
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(...));
3:字符编码(理解)
(1)编码表
字符及其对应的数值组成的一张表。
(2)常见的码表:
ASCII,ISO-8859-1,GB2312,GBK,GB18030,BIG5,UTF-8
(3)编码应用:
A:IO流中(转换流)
B:字符串
最好编码一致。
|
|