目录
- 1. 预习
- 1.1 学习目标
- 1.2 预习任务
- 1.3 课前问题列表
- 2.实验
- 3.作业
- 3.1 课后复习指导
- 3.2 面向对象设计大作业第二阶段-类的设计与简单代码实现
- 3.3 视频
- 3.4 章节测验与讨论
1. 预习
简易预习流程:先看预习课件,认真完成里面的习题。然后根据需要观看视频。最后尝试完成课前问题列表。
以任务的形式完成"课前问题列表"的同学可获取积分,可部分完成。默认5分。
1.1 学习目标
- 理解与掌握Java流编程技术。能区分与使用字节流、字符流读写数据,掌握组合过滤流的编程模式。
- 掌握使用Java操作文件系统。掌握File、Path、Paths、Files类的用途。了解RandomAccessFile的使用。
- 了解正则表达式。
1.2 预习任务
- 预习课件(两份)
- 观看视频:8.2 文件与流简介、8.3 输入输出流基本概念、8.4 File类
1.3 课前问题列表
- 程序可以处理的数据来源除了文件还有哪些?对不同的数据来源共同的操作是什么?
- 将对不同数据源中数据的读写抽象为对流的读写,有什么好处?
- 二进制文件与文本文件有什么区别?字节流与字符流之间有什么关系?为什么有的文本文件打开会乱码?怎么解决?
- 字符与字节之间的关系是什么?尝试使用Visual Studio Code的Hex Editor插件打开一个文本文件。在文本文件中输入"123abc中文"。观察:一个英文字符占几个字节,一个中文字符占用几个字节。在Java程序中,使用字节流怎么将这个文件中的数据正确读取并组装起来。
- 有一个stus数组,里面有若干Student对象(String name, int age, boolean gender, double score)。要将这些对象高效率地存储到文件中,需要使用哪些流?使用二进制流与使用字符流将这个数组存储到文件有何不同?使用二进制流与使用字符流从文件中读取并组装成对象有何不同?
- 使用什么类可以对文件进行随机存取?读写的单位是什么?为什么不是字符呢?
2.实验
实验链接:https://www.cnblogs.com/zhrb/p/6834084.html
提前完成“第1次实验”之“0.字节流与二进制文件”请联系老师加分
3.作业
本周作业主要以完成实验内容为主。请将上方实验链接中的实验内容完成。
3.1 课后复习指导
- 使用流编写代码的一般模式。使用 try...catch...finally
- 组合过滤流编程模式
相关代码:InputStreamReaderTest.java - 常见的字节流、字符流实现类、其他常用类
字节流:文件读写:FileInputStream, FileOutputStream。相关代码:CopyBytesWithBuffer.java
字节流:缓冲流:BufferedInputStream....。相关代码:CopyBytesWithBuffer.java
字节流:数据流:DataInputStream, DataOutputStream。 相关代码:DataStreams.java
字节流:对象流:ObjectInputStream, ObjectOutputStream。相关代码:ObjectStreams.java,ObjectStreamTest.java(序列化深入,可结合《Java核心技术》深入研究)
字符流:指定编码读写解决乱码问题:InputStreamReader。相关代码:InputStreamReaderTest.java
字符流:缓冲流、格式化输出。对字符的常用类:BufferedReader、PrintWriter、Scanner(不是流)。相关代码:textfiletest/TextFileTest.java
随机存取文件:RandomAccessFile(不是流):相关代码:RandomAccessFileTest.java (简单),RandomFileTest.java(复杂,综合案例)
3.2 面向对象设计大作业第二阶段-类的设计与简单代码实现
针对上周的选题。对所要实现的系统,进行类的设计。
该阶段主要包含:
- 项目中包的规划。
- 类与接口的设计。具体功能实现代码可暂不实现。
3.3 视频
8.5 字节流
8.6 字符流
8.7 缓冲流
3.4 章节测验与讨论
“文件与流”章节测验。将计入线上成绩,请谨慎开始。
课后思考:
- 什么时候应该使用输入流、什么时候应该使用输出流?
- 你编程时:什么时候使用字节流?什么时候使用字符流?
- Java中定义的三个标准输入输出流是什么?它们对应什么?
- 使用缓冲流读写可能会造成数据丢失。为什么?
- 什么类可以将字节流转化为字符流?利用这个类怎么解决乱码问题?
- NIO.2对NIO的主要改进有哪些?
- 一个网页文件(html)包含很多链接。如何编程抽取出其中的所有链接?