作业12-流与文件

1. 本周学习总结

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

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

使用流与文件改造你的图书馆管理系统或购物车。

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

答:我用文件流打开文件,然后用字符流方法读取,在这里我用的是BufferedReader来按行读取。文件按信息为例,书名、作者、时间(取得是系统时间)、和编号。

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

答:实现流与文件此项功能时,我没有用到接口用的类如下:

  • BufferedReader与BufferedWriter
  • FileInputStream 与FileOutputStream
  • InputStreamReader与OutputStreamWriter

这都是写入写出操作所需要的类。

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

由于我是有用到中文我所有的TXT文件都是UTF-8格式,在eclipse上也是有加UTF-8转码。但在netbeans上不需要转码即可输出中文,所以我把转码语句删掉了。(截图的是NetBeans上的)

3. 代码量统计

3.1 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
1 113 113 13 13
2 365 252 23 10
3 666 301 28 5
4 883 217 36 8
5 1095 212 40 4
6 1750 655 51 11
7 3412 1662 60 9
8 3653 241 65 5
9 4062 409 70 5
10 4351 289 79 9
11 4747 396 88 9
12 5140 393 91 3

需要将每周的代码统计情况融合到一张表中。

选做:

4. 流与文件学习指导(底下的作业内容全部都是选做)

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 生成文件大小多少(使用右键文件属性查看)?分析该文件大小

答:我用一行为例有16个字节。



字节分配分别为

id1个,name4个,age2个,Grade是double行4个。

换行符两个,|一个共3个。所以是16个。

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

答:0字节,PrintWriter自带缓冲区,得flush或者close强制输出不然不输出。

参考:本题具体要求见流与文件实验任务书-题目1-2.1

参考代码:TextFileTest.java

2. 缓冲流

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

答:



答:因为BufferedReader有缓冲区,先对缓冲区操作再进行底层数据读取。

2.2 将PrintWriter换成BufferedWriter,观察写入文件的速度是否有提升。记录两者的运行时间。试分析原因。

答:会快,与2.1同理。

参考:本题具体要求见流与文件实验任务书-题目1-2.2到2.3

参考代码:BufferedReaderTest.java

JUnit4常用注解

JUnit4学习

JUnit4参考资料

3. 字符编码

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

答:有乱码。

FileInputStream fis = new FileInputStream("E:/EncodeTest.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");

201621123012《Java程序设计》第12次学习总结的更多相关文章

  1. 2018面向对象程序设计(Java)第12周学习指导及要求

    2018面向对象程序设计(Java)第12周学习指导及要求 (2018.11.15-2018.11.18)   学习目标 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌 ...

  2. 面向对象程序设计(JAVA) 第12周学习指导及要求

    2019面向对象程序设计(Java)第12周学习指导及要求 (2019.11.15-2019.11.18)   学习目标 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20175209 《Java程序设计》第九周学习总结

    20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...

  6. 20175221 2018-2019-2 《Java程序设计》第一周学习总结

    20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...

  7. 20175204 张湲祯 2018-2019-2《Java程序设计》 第一周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第一周学习总结 教材学习内容总结 -第一章Java入门要点: -Java的地位:具有面向对象,与平台无关,安全稳定和多线 ...

  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  9. 20175314 《Java程序设计》第九周学习总结

    20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...

  10. 20175234 2018-2019-2 《Java程序设计》第九周学习总结

    目录 20175234 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码托管 感想 学习进度条 参考资料 20175234 2 ...

随机推荐

  1. easyui隐藏列

    1.$("#test-datagrid").datagrid('hideColumn', 'password');其中第二个参数为对应的域,即field 2. <th dat ...

  2. eclipse Oxygen 4.7 + pydev

    pydev 官网  安装手册 PyDev requires Java 8 and Eclipse 4.6 (Neon) in order to run and only supports Python ...

  3. 深入探究jvm之GC的参数调优

    在上一篇博客记录了GC的算法及种类,这篇博客主要记录一下GC的参数如何调整以提高jvm的性能. 一.堆的回顾: 堆的内存空间总体分为新生代和老年代,老年代存放的老年对象,新构造的对象分配在eden区中 ...

  4. C++——代码运行过程详解

    #include <iostream> using namespace std; ;//初始化的全局变量:保存在数据段 char *p1;//未初始化的全局变量:保存在BSS段 int m ...

  5. 3-为什么很多 对 1e9+7(100000007)取模

    首先有很多题目的答案是很大的,然而出题人的本意也不是让选手写高精度或者Java,所以势必要让答案落在整型的范围内.那么怎么做到这一点呢,对一个很大的质数取模即可(自行思考为什么不是小数).那么如果您学 ...

  6. java中的不死兔问题(斐波那契数列)(递归思想)

    有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? public class Item { public static ...

  7. 通过MySql自动同步刷新redis

    在服务端开发过程中,一般会使用MySQL等关系型数据库作为最终的存储引擎,Redis其实也可以作为一种键值对型的数据库,但在一些实际场景中,特别是关系型结构并不适合使用Redis直接作为数据库.这俩家 ...

  8. 【转】ConcurrentMap 分析和思考

    预备知识:Java HashMap and HashSet 的实现机制 由预备知识可以知道hashmap 的存储结构为: (图像来自http://www.ibm.com/developerworks/ ...

  9. JSTL详解实例

    JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ...

  10. mysql 空间索引的使用

    CREATE TABLE tb_geo(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(128) NOT NULL,pnt POINT NOT NULL, ...