一.本周学习总结
-
1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。
二.书面作业
本次PTA作业题集多线程
1. 面向系统综合设计-图书馆管理系统或购物车
使用流与文件改造你的图书馆管理系统或购物车。
-
2.1 简述如何使用流与文件改造你的系统。文件中数据的格式如何?
上周写图书馆管理系统时就直接使用文件来进行操作了,但由于当时还没有学流与文件,写的就非常的杂乱,这周根据上课内容进行了修改。
文件中数据的格式如何如下:
-
2.2 简述系统中文件读写部分使用了流与文件相关的什么接口与类?为什么要用这些接口与类?
使用了
Reader
、Writer
的子类FileReader
、FileWriter
用于读写文件;BufferedReader
、BufferedWriter
用于提供缓冲,用以加速;PrintWriter
用来提供println
方法。 -
2.3 截图读写文件相关代码。关键行需要加注释。
2. 代码量统计
-
2.1 统计本周完成的代码量
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 193 | 193 | 6 | 6 |
2 | 625 | 432 | 35 | 29 |
3 | 1076 | 451 | 41 | 6 |
4 | 1472 | 396 | 47 | 6 |
5 | 1932 | 460 | 53 | 6 |
6 | 2235 | 303 | 57 | 4 |
7 | 2651 | 416 | 62 | 5 |
8 | 2895 | 244 | 67 | 5 |
9 | 3275 | 380 | 73 | 6 |
10 | 3544 | 269 | 81 | 8 |
11 | 4175 | 631 | 90 | 9 |
12 | 4273 | 98 | 92 | 2 |
选做:流与文件学习指导(底下的作业内容全部都是选做)
1. 字符流与文本文件:使用 PrintWriter(写),BufferedReader(读)
将Student对象(属性:int id, String name,int age,double grade)写入文件student.data、从文件读出显示。
-
1.1 生成的三个学生对象,使用PrintWriter的println方法写入student.txt,每行一个学生,学生的每个属性之间用|作为分隔。使用Scanner或者BufferedReader将student.txt的数据读出。(截图关键代码,出现学号)
-
1.2 生成文件大小多少(使用右键文件属性查看)?分析该文件大小
生成文件为42字节,数字、字母和字符都为1个字节,换行符占2个字节,共3行,每行14个字节,所以共42字节。
-
1.3 如果调用PrintWriter的println方法,但在后面不close。文件大小是多少?为什么?
文件大小为0,因为数据在缓冲区中,如果不使用close()方法,数据就不会被存储而是直接丢失。
3. 字符编码
-
3.1 现有EncodeTest.txt 文件,包含一些中文,该文件使用UTF-8编码。使用FileReader与BufferedReader将EncodeTest.txt的文本读入并输出。是否有乱码?为什么会有乱码?如何解决?(截图关键代码,出现学号)
由上图可知有乱码,因为Reader类是Java的I/O中读字符的父类,而InputStream类是读字节的父类,InputStreamReader类就是关联字节到字符的桥梁,它负责在I/O过程中处理读取字节到字符的转换,而具体字节到字符的解码实现它由StreamDecoder去实现,在StreamDecoder解码过程中必须由用户指定Charset 编码格式。本题中没有指定Charset,将使用本地环境中的默认字符集GBK编码。