学号:201621123032 《Java程序设计》第12周学习总结
1:本周学习总结
1.1:以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。
2:面向系统综合设计-图书馆管理系统或购物车
2.1: 简述如何使用流与文件改造你的系统。文件中数据的格式如何?
比起上次图书信息储存在hashmap里,本次采用流与文件将图书信息放在了文件里,也从文件里读取信息。
文件格式为: .txt。
2.2:简述系统中文件读写部分使用了流与文件相关的什么接口与类?为什么要用这些接口与类?
使用字符输出流:FileWriter,BufferedWriter。 字符输入流:FileReader ,BufferedReader
- FileWriter:创建文件字符输出流
- BufferedWriter:使用缓冲数据流封装输出流
- FileReader:创建文件字符输入流
- BufferedReader:使用缓冲数据流封装输入流
为了从文件中读取信息和将新添信息写入文件中。
2.3: 截图读写文件相关代码。关键行需要加注释。
将图书内容储存到文件里:
查询某本图书信息:
删除文件里的某行图书信息:先将信息储存到动态数组里,在重写文件信息。
部分功能还没
有实现。
运行结果:
3:代码量统计
周次 | 总代码量 | 新增加代码量 | 总文件夹 | 新增加文件夹 |
---|---|---|---|---|
1 | 114 | 114 | 11 | 11 |
2 | 520 | 406 | 16 | 6 |
3 | 1089 | 569 | 22 | 6 |
5 | 1425 | 336 | 29 | 7 |
6 | 1819 | 394 | 31 | 2 |
7 | 2987 | 1168 | 54 | 23 |
8 | 5437 | 2450 | 79 | 25 |
9 | 5695 | 258 | 84 | 5 |
10 | 6680 | 985 | 102 | 18 |
11 | 6935 | 255 | 111 | 9 |
12 | 7401 | 466 | 123 | 12 |
13 | 8899 | 1498 | 141 | 18 |
![]() |
4:选做
4.1: 字符流与文本文件:使用 PrintWriter(写),BufferedReader(读)
1: 生成的三个学生对象,使用PrintWriter的println方法写入student.txt,每行一个学生,学生的每个属性之间用|作为分隔。使用Scanner或者BufferedReader将student.txt的数据读出。(截图关键代码,出现学号)
运行结果:
2:生成文件大小多少(使用右键文件属性查看)?分析该文件大小
每行16个字节
num:2, name:4, age:2,grade:5 分隔符:3
4.2:缓冲流
1:使用PrintWriter往文件里写入1千万行(随便什么内容都行),然后对比使用BufferedReader与使用Scanner从该文件中读取数据的速度(只读取,不输出),使用哪种方法快?截取测试源代码,出现学号。请详细分析原因?提示:可以使用junit4对比运行时间
使用BufferedReader更快,BufferedReader使用缓冲可以减少IO次数,所以读取速度变快。
时间对比:
4.3:
1: 现有EncodeTest.txt 文件,包含一些中文,该文件使用UTF-8编码。使用FileReader与BufferedReader将EncodeTest.txt的文本读入并输出。是否有乱码?为什么会有乱码?如何解决?(截图关键代码,出现学号)
会乱码,因为文件是UTF-8编码,但是读取的编码是用GBK。
解决:只要代码读取时改用UTF-8编码即可
运行结果: