学号:201621123032 《Java程序设计》第12周学习总结

时间:2021-07-27 15:10:52

1:本周学习总结

1.1:以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。

学号:201621123032 《Java程序设计》第12周学习总结

2:面向系统综合设计-图书馆管理系统或购物车

2.1: 简述如何使用流与文件改造你的系统。文件中数据的格式如何?

比起上次图书信息储存在hashmap里,本次采用流与文件将图书信息放在了文件里,也从文件里读取信息。
文件格式为: .txt。

2.2:简述系统中文件读写部分使用了流与文件相关的什么接口与类?为什么要用这些接口与类?

使用字符输出流:FileWriter,BufferedWriter。 字符输入流:FileReader ,BufferedReader

  • FileWriter:创建文件字符输出流
  • BufferedWriter:使用缓冲数据流封装输出流
  • FileReader:创建文件字符输入流
  • BufferedReader:使用缓冲数据流封装输入流
    为了从文件中读取信息和将新添信息写入文件中。

    2.3: 截图读写文件相关代码。关键行需要加注释。

    将图书内容储存到文件里:
    学号:201621123032 《Java程序设计》第12周学习总结

查询某本图书信息:
学号:201621123032 《Java程序设计》第12周学习总结

删除文件里的某行图书信息:先将信息储存到动态数组里,在重写文件信息。
学号:201621123032 《Java程序设计》第12周学习总结

部分功能还没学号:201621123032 《Java程序设计》第12周学习总结

有实现。
运行结果:

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

学号:201621123032 《Java程序设计》第12周学习总结

4:选做

4.1: 字符流与文本文件:使用 PrintWriter(写),BufferedReader(读)

1: 生成的三个学生对象,使用PrintWriter的println方法写入student.txt,每行一个学生,学生的每个属性之间用|作为分隔。使用Scanner或者BufferedReader将student.txt的数据读出。(截图关键代码,出现学号)

学号:201621123032 《Java程序设计》第12周学习总结
运行结果:
学号:201621123032 《Java程序设计》第12周学习总结

2:生成文件大小多少(使用右键文件属性查看)?分析该文件大小

学号:201621123032 《Java程序设计》第12周学习总结
每行16个字节
num:2, name:4, age:2,grade:5 分隔符:3

4.2:缓冲流

1:使用PrintWriter往文件里写入1千万行(随便什么内容都行),然后对比使用BufferedReader与使用Scanner从该文件中读取数据的速度(只读取,不输出),使用哪种方法快?截取测试源代码,出现学号。请详细分析原因?提示:可以使用junit4对比运行时间

学号:201621123032 《Java程序设计》第12周学习总结

使用BufferedReader更快,BufferedReader使用缓冲可以减少IO次数,所以读取速度变快。

时间对比:
学号:201621123032 《Java程序设计》第12周学习总结

4.3:

1: 现有EncodeTest.txt 文件,包含一些中文,该文件使用UTF-8编码。使用FileReader与BufferedReader将EncodeTest.txt的文本读入并输出。是否有乱码?为什么会有乱码?如何解决?(截图关键代码,出现学号)

会乱码,因为文件是UTF-8编码,但是读取的编码是用GBK。
学号:201621123032 《Java程序设计》第12周学习总结

解决:只要代码读取时改用UTF-8编码即可
学号:201621123032 《Java程序设计》第12周学习总结

运行结果:学号:201621123032 《Java程序设计》第12周学习总结