-
IO中的流按照流向分为什么?
- 输入流(读取数据)/输出流(写出数据)
-
IO中的流按照类型分为什么?
- 字节流(任意文件)/字符流(文本文件) -> 字节流是万物之母,遇事不决字节流.
-
字节流中的读的方法分为哪几种?我们常用哪种?格式是什么?
-
read(); -> 一次读取一个字节的数据,会将读取到的数据封装到返回值中.
-
read(byte[] bys) -> 一次读取一个字节数组的数据,会将读取到的数据封装到字节数组中,会将本次读取到的有效数据的长度作为返回值返回(常用)
-
fis -> 已经绑定好. byte[] bys = new byte[1024]; int len; while((len = fis.read(bys)) != -1){ //操作bys. }
-
-
-
字节流中的写的方法分为哪几种?我们常用哪种?格式是什么?
-
write(int c); -> 一次写出一个字节的数据.
-
write(byte[] bys); -> 一次写出一个字节数组的数据.
-
write(byte[] bys,int off,int len) -> 一次写出一个字节数组的一部分,从off位索引开始写,写len个数据.
-
fis/fos -> 都已经绑定好文件了. byte[] bys = new byte[1024]; int len; while((len = fis.read(bys)) != -1){ fos.write(bys,0,len); }
-
-
A.字节缓冲流 10分45秒 掌握 -> 是对字节流的一个增强.
-
问题回顾与知识点总结
-
如何初始化字节缓冲输入流/字节缓冲输入流? 装饰者模式
-
字节缓冲流没有读写的功能,一切读/写都是依靠被它增强的字节流,所以说在创建字节缓冲流的时候应该传入一个字节流参数.
-
//初始化字节缓冲输入流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(String pathName/File file)); //初始化字节缓冲输出流 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(String pathName/File file));
-
-
字节缓冲输入流/输出流的操作方法和字节输出流/输入流有什么区别?
- 没有区别.
-
字节缓冲输入流/输出流的好处是什么?
- 因为本身就是对字节流的一个增强 -> 实际上增强了字节流的性能/效率.
-
B.字节流复制视频 11分2秒 练习
- 练习
- 练习使用字符缓冲流复制视频,查看时间.
C.为什么出现字符流 7分44秒 理解
- 问题回顾与知识点总结
- 为什么会出现字符流?字符流是什么组成的?
- 方便我们操作文本文件,字符流 = 字节流 + 编码表
- 底层如何识别中文?
- 一个中文 = 3个字节(第一个字节永远是一个负数)
- 为什么会出现字符流?字符流是什么组成的?
D.编码表 8分3秒 理解
- 问题回顾与知识点总结
- 编码和解码 -> 按照某种规则将数据写入称为编码,从文件中/系统中按照某种规则读取数据称为解码.
- 我们常用的编码表有哪些?
- ASCII码表 0-127[,.]
- GBK 中国使用的码表(里面包含了两万多个常用的汉字) -> 1个汉字 = 2个字节
- Unicode 万国码 (包含绝大多数国家的文字/符号) -> UTF-8 1个汉字 = 3个字节
E.字符串中的编码解码问题 6分17秒 掌握
-
问题回顾与知识点总结
-
如何指定数组的编码方式/如何指定数组的解码方式?
-
String s = "中国"; //存储为GBK的编码,实际上就是将字符串转换为字节数组的时候,要指定编码的方式. byte[] bys = s.getBytes("GBK"); //bys长度就是4. //解码 -> 在构建String对象的时候,指定解码的方式. String ss = new String(bys,"GBK"); //如果不指定编码和解码的形式,那么默认会按照UTF-8进行编码/解码.
-
-
F.字符流中的编码解码问题 10分42秒 掌握
-
问题回顾与知识点总结
-
字符流的顶级父类是哪两个类?
- Reader(读取)/Writer(写入)
-
如何创建指定编码的字符流?
-
//创建字符输入流 InputStreamReader isr = new InputStreamReader(new FileInputStream(String pathName/File),String charName); //创建字符输出流 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(String pathName/File),String charName);
-
-
字符输出流的写的方法有什么特点?
- write(String str); 可以写一个字符串的数据到文件中.
-
字符输入流的读的方法有什么特点?
- read();返回值:int -> 之前一次只可以读取一个字节的数据(一个汉字三分之一) 但现在可以一次读取一个字符的数据了.
-
InputStreamReader/OutputStreamWriter -> 原生字符流/转换流
-
G.字符流写数据的5种方式 11分1秒 掌握
- 问题回顾与知识点总结
- 字符流写数据的五种方式的作用分别是什么?最常使用哪种?
- write(int c) -> 写一个字符数据到文件中(不常用)
- write(char[] ch) -> 写一个字符数组的数据到文件中.
- write(char[] ch,int off,int len) -> 写一个字符数组的一部分到文件中(复制)
- write(String s); -> 写一个字符串到文件中(操作文件的文本内容)
- write(String s,int off,int len) -> 写一个字符串的一部分到文件中.
- 如果想要数据从缓冲区写入文件中,需要做什么操作?
- flush()或者close()
- 字符流写数据的五种方式的作用分别是什么?最常使用哪种?
H.字符流读数据的2种方式 4分57秒 掌握
- 问题回顾与知识点总结
- 字符流读数据和字节流读数据的区别是什么?
- read(); -> 字符流一次读一个字符的数据,字节流一次读一个字节的数据.
- read(char[] chs)/read(byte[] bys); -> 字符流一次读取一个字符数组,字节流一次读取一个字节数组.
- 字符流读数据和字节流读数据的区别是什么?
I.字符流复制Java文件 4分38秒 练习
J.字符流复制Java文件改进版 8分 练习
-
问题回顾与知识点总结
-
OutputStreamWriter和InputStreamReader类名较长,书写不方便,而且使用默认编码的情况可以进行简化书写,要使用这两个流的哪个子类呢?
-
FileRedaer
-
FileReader fr = new FileReader(String pathName/File file);
-
-
FileWriter
-
FileWriter fw = new FileWriter(String pathName/File file,boolean append)
-
-
-
-
练习
- 使用FileReader和FileWriter进行java文件的复制.
K.字符缓冲流 8分20秒 掌握
-
问题回顾与知识点总结
-
如何初始化字符缓冲流?
-
//初始化字符缓冲输入流 BufferedReader br = new BufferedReader(new FileReader(String pathName/File file)); //初始化字符缓冲输出流 BufferedWriter bw = new BufferedWriter(new FileWriter(String pathName /File file));
-
-
字符缓冲流的使用和字符流有什么区别?
- 没有区别.
-
L.字符缓冲流复制Java文件 3分50秒 练习
- 练习
- 使用字符缓冲流复制Java文件.
M.字符缓冲流特有功能 7分46秒 掌握
- 问题回顾与知识点总结
- 如何使用字符缓冲流实现换行?
- 直接使用字符缓冲流对象的newLine()的方法 -> 会根据系统属性自动生成换行符.
- 字符缓冲流的readLine方法有什么特点?
- 可以读取一行数据,读到的数据中不包括任何终止字符(不包含换行符),返回值是String.
- 当读到了文件的末尾,则返回的String的是null.
- 如何使用字符缓冲流实现换行?