当前位置: 首页 > news >正文

201521123083《Java程序设计》第12周学习总结

1. 本周学习总结

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

2. 书面作业

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

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

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

图片.png

1.2 生成文件大小多少?分析该文件大小

图片.png

一个字符占一个字节,CRLF两个,共44个

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

0个,因为PrintWriter利用缓冲区读写,详见stackoverflow的一个问题[Is PrintWriter buffered?](http://stackoverflow.com/questions/32177690/is-printwriter-buffered),里面又从代码分析,关键点在于这里

 public PrintWriter(OutputStream out, boolean autoFlush) {
        this(new BufferedWriter(new OutputStreamWriter(out)), autoFlush);

而其实close的时候又刷新一次,讲缓冲区的数据送出来,不然量太少,还留在缓冲去

2. 缓冲流

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

图片.png

本来想用Juit4的,莫名fail,未找到原因,就用时间差,bufferreader比较块应该是利用到中间的缓冲期,这样不要每次读数据,就传送过来,先寄存道缓存期,等到一定量之后再拿出来

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

图片.png
又是缓冲区的原因

3. 字符编码

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

图片.png

FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符。

3.2 编写一个方法convertGBK2UTF8(String src, String dst),可以将以GBK编码的源文件src转换成以UTF8编码的目的文件dst。

图片.png

参考:InputStreamReaderTest.java与教学PPT

4. 字节流、二进制文件:DataInputStream, DataOutputStream、ObjectInputStream

4.1 参考DataStream目录相关代码,尝试将三个学生对象的数据写入文件,然后从文件读出并显示。(截图关键代码,出现学号)

图片.png

4.2 生成的文件有多大?分析该文件大小?将该文件大小和题目1生成的文件对比是大了还是小了,为什么?

图片.png
变大了

5. Scanner基本概念组装对象

编写public static List readStudents(String fileName)
从fileName指定的文本文件中读取所有学生,并将其放入到一个List中。应该使用那些IO相关的类?说说你的选择理由。

图片.png
少些了一步,加入list,不过都一样,在函数外面加,就只返回Studeng对象,这里用Scanner,感觉在流里面Scanner是最方便的,高度封装.

7. 文件操作

编写一个程序,可以根据指定目录和文件名,搜索该目录及子目录下的所有文件,如果没有找到指定文件名,则显示无匹配,否则将所有找到的文件名与文件夹名显示出来。

7.1 编写public static void findFile(String path,String filename)

函数,以path指定的路径为根目录,在其目录与子目录下查找所有和filename相同的文件名,一旦找到就马上输出到控制台。(截图关键代码,出现学号)

图片.png

7.2 加分点:使用队列、使用图形界面、使用Java NIO.2完成(任选1)

图片.png

图片.png

8. 正则表达式

8.1 如何判断一个给定的字符串是否是10进制数字格式?尝试编程进行验证。(截图关键代码,出现学号)

图片.png

8.2 选做:修改HrefMatch.java,尝试匹配网页中的数字字符串、匹配网页中的图片字符串。

图片.png

图片.png

8.3 选做(较难):进一步改造上面的程序,获得图片的链接,如IMG src="images/mail1.gif"

,然后经过处理,生成该图片的实际链接地址http://cec.jmu.edu.com/images/mail1.gif
。最后将生成的若干地址,放入一个队列。编写方法,可以依照该队列的所有图片地址,一次将图片下载下来。正则表达式参考文章

图片.png

转载于:https://www.cnblogs.com/daizhibin/p/6850341.html

相关文章:

  • 【DP】:CF #319 (Div. 2) B. Modulo Sum
  • Druid连接池及监控在spring中的配置
  • 文本强制一行显示,多余的显示省略号
  • 设计模式之适配器模式(Adapter)
  • Linux tomcat
  • 我所认识的javascript正则表达式
  • eclipes 下 mavenweb项目 启动 jar包冲突问题
  • Open-DrainPush-Pull
  • js中文乱码问题,编码设为utf-8,但还是乱码问题。
  • PopupMenu 使用及自定义样式
  • 交换机基础
  • Java基础教程:网络编程
  • 构建之法阅读心得(六)
  • 第十三周学习进度条
  • linux 安装apache源码
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • Android Volley源码解析
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Java 23种设计模式 之单例模式 7种实现方式
  • Logstash 参考指南(目录)
  • Python_网络编程
  • 包装类对象
  • 搞机器学习要哪些技能
  • 简单基于spring的redis配置(单机和集群模式)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 面试总结JavaScript篇
  • 前端面试之CSS3新特性
  • 前嗅ForeSpider中数据浏览界面介绍
  • 移动端 h5开发相关内容总结(三)
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #DBA杂记1
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (4)STL算法之比较
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (区间dp) (经典例题) 石子合并
  • (十)T检验-第一部分
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • .axf 转化 .bin文件 的方法
  • .chm格式文件如何阅读
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net FrameWork简介,数组,枚举
  • .NET MVC第三章、三种传值方式
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .Net7 环境安装配置
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹