1.本周学习总结

用java模拟文件管理系统_用java模拟文件管理系统

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

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

  • 将书目信息写入文件,查阅图书馆书目信息时,实现文件的读取

用java模拟文件管理系统_文件大小_02

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

用java模拟文件管理系统_数据_03

  • File类:想要访问磁盘上的文件系统就需要使用到File类
  • Writer类:BufferedWriter类具有较大的缓冲内存,输出快

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

用java模拟文件管理系统_文件大小_04

用java模拟文件管理系统_java_05

用java模拟文件管理系统_数据_06

3.代码量统计

3.1统计本周完成的代码量

周次

总代码量

新增代码量

总文件数

新增文件数

第一周

189

189

10

10

第二周

304

304

9

9

第三周

557

557

10

10

第四周

621

621

8

8

第五周

326

326

7

7

第六周

972

972

12

12

第七周

338

338

4

4

第八周

379

379

6

6

第九周

492

492

5

5

第十周

473

473

6

6

第十一周

527

527

10

10

第十二周

661

661

7

7

4.流与文件学习指导

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

将Student对象(属性:int id, String name,int age,double grade)写入文件student.data、从文件读出显示。

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

用java模拟文件管理系统_数据_07

用java模拟文件管理系统_用java模拟文件管理系统_08

用java模拟文件管理系统_写入文件_09

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

用java模拟文件管理系统_java_10

4.1.3如果调用PrintWriter的println方法,但在后面不close。文件大小是多少?为什么?

  • 文件大小为0字节,因为没有调用close()方法,相关数据还在缓冲区中

用java模拟文件管理系统_文件大小_11

用java模拟文件管理系统_写入文件_12

4.2缓冲流

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

用java模拟文件管理系统_用java模拟文件管理系统_13

用java模拟文件管理系统_文件大小_14

  • BufferedReader读取数据的速度快于Scanner
  • BufferedReader具有更大的缓冲区内存;Scanner 需要对输入数据进行解析,更耗费时间

4.3字符编码

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

用java模拟文件管理系统_写入文件_15

用java模拟文件管理系统_用java模拟文件管理系统_16

用java模拟文件管理系统_用java模拟文件管理系统_17