今天是IO流学习的第二天,今天上课有点走神,注意力不太集中,可能是晚上睡晚了,今天要早点睡,为明天上课提高效率。
1,流的操作规律。四个明确必须记住,并应用?
(1)明确一:源和目的
源: Reader InputStream
目的:Writer OutputStream
(2)明确二:是否为纯文本
是纯文本:Reader Writer
不是纯文本:InputStream OutputStream
(3)明确三:具体的设备
硬盘:file
键盘:System.in
内存:数组
网络:socket流
(4)明确四:是否需要额外功能
缓冲区
BufferedReader bufr = new BufferedReader();
BuuferedWriter bufw = new BufferedWriter();
2,将提到的5个需求必须全用 需求,规律(思路),代码,来体现?必须做!!!
需求一:复制一个文本文件。
(1)明确一:源和目的
源: Reader InputStream
目的:Writer OutputStream
(2)明确二:是否为纯文本
是纯文本:Reader Writer
(3)明确三:具体的设备
硬盘:file
硬盘file
FileReader FileWriter
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");
(4)明确四:是否需要额外功能
需要缓冲区
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedReader bufr = new BufferedReader(new FielWriter("b.txt"));
需求二:读取键盘录入信息,并写入到一个文件中
(1)明确一:源和目的
源: Reader InputStream
目的:Writer OutputStream
(2)明确二:是否为纯文本
是纯文本:Reader Writer
(3)明确三:具体的设备
键盘:System.in
硬盘 file
InputStream ips = System.in
FileWriter fw = new FileWriter("b.txt");
(4)明确四:是否需要额外功能
需要转换
InputStreamReader isr = new InputStreamReader(System.in);
FileWriter fw = new FileWriter("b.txt");
需要高效
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));
需求三:将一个文本文件数据显示在控制台上
(1)明确一:源和目的
源: Reader InputStream
目的:Writer OutputStream
(2)明确二:是否为纯文本
是纯文本:Reader Writer
(3)明确三:具体的设备
硬盘 file
控制台:System.out
FileReader fr = new FileReader("b.txt");
OutputStream ops = System.out
(4)明确四:是否需要额外功能
需要转换
FileReader fr = new FileReader("b.txt");
OutputStreamWriter isw = new OutputStreamWriter(System.out);
需要缓冲区
BufferedReader bufr = new BufferedReader(new FileReader("b.txt"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
需求四:读取键盘录入数据,显示在控制台上
(1)明确一:源和目的
源: Reader InputStream
目的:Writer OutputStream
(2)明确二:是否为纯文本
是纯文本:Reader Writer
(3)明确三:具体的设备
键盘 System.in
控制台:System.out
InputStream ips = System.in
OutputStream ops = System.out
(4)明确四:是否需要额外功能
需要转换
InputStreamReader isr = new InputStreamReader(System.in);
OutputStreamWriter isw = new OutputStreamWriter(System.out);
需要缓冲区
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
需求五:将一个中文字符串数据按照指定的编码表写入到一个文本文件中.
(1)明确一:源和目的
目的:Writer OutputStream
(2)明确二:是否为纯文本
是纯文本: Writer
(3)明确三:具体的设备
硬盘:File
FileWriter fw = new FileWriter("a.txt");
(4)明确四:是否需要额外功能
需要转换
OutputStreamWriter osw = new OutputStreamWriter(new FileWriter("a.txt"),charsetName);
需要高效
BufferedReader bufr = new BufferedReader(new OutputStreamWriter(new FileWriter("a.txt"),charsetName));
3,File对象基本使用。了解创建,删除,获取,判断等。
1:创建。
boolean createNewFile():在指定目录下创建文件,如果该文件已存在,则不创建。
而对操作文件的输出流而言,输出流对象已建立,就会创建文件,如果文件已存在,会覆盖。除非续写。
boolean mkdir():创建此抽象路径名指定的目录。
boolean mkdirs():创建多级目录。
2:删除。
boolean delete():删除此抽象路径名表示的文件或目录。
void deleteOnExit():在虚拟机退出时删除。
注意:在删除文件夹时,必须保证这个文件夹中没有任何内容,才可以将该文件夹用delete删除。
window的删除动作,是从里往外删。
注意:java删除文件不走回收站。要慎用。
3:获取.
long length():获取文件大小。
String getName():返回由此抽象路径名表示的文件或目录的名称。
String getPath():将此抽象路径名转换为一个路径名字符串。
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
String getParent():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间。
File.pathSeparator:返回当前系统默认的路径分隔符,windows默认为 “;”。
File.Separator:返回当前系统默认的目录分隔符,windows默认为 “\”。
4:判断:
boolean exists():判断文件或者文件夹是否存在。
boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。
boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。
boolean isAbsolute():测试此抽象路径名是否为绝对路径名。
5:重命名。
boolean renameTo(File dest):可以实现移动的效果。剪切+重命名
4,File对象的过滤器。
在file的list方法中可以接受一个filefilter参数,通过该参数可以只列出符合条件的文件。
FileFilter接口里面包含了一个accept(File dir, String name)方法,该方法将依次对指定的file所有子目录、子文件夹进行迭代,如果该方法返回true,则list方法会列出该子目录或者子文件夹。通过实现accept方法就是指定自己的规则,指定那些文件需要由list方法列出。
5,转换流的由来?
转换流是字符和字节之间桥梁。
转换流将字节流和编码表进行了封装,提供了对字符操作的更便捷方式。
6,转换流的两个桥梁都是从哪里到哪里?
InputStreamReader 将字节输入流转成字符输入流
OutStreamWriter 将字节输出流转成字符输出流
7,转换流的另一个功能,编码的体现?
一旦操作文本涉及到具体的编码表时,必须使用转换流
8,转换流的子类和转换流的区别?
InputStreamReader 字节-->字符
|--FileReader : 字节流+本地默认码表。
OutputStreamWriter 字符-->字节
|--FileWriter