集美大学 计算机 郑如滨

教学博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

第11周 预习、实验与作业:流与文件

0.任务完成说明

本次预习中的1.3 课前问题列表请在课前组队完成(2人一组),写在一个记录本或写在电脑上备查,课上将对相关问题进行讨论。
课上回答较好的个人,将可获得平时加分。未获得回答机会的同学,可提交Markdown格式的博客或者帖子于下课后申请老师检查,完成较好则可获得加分。每次预习每人只能加分一次。

1. 预习

简易预习流程:先看预习课件,认真完成里面的习题。然后根据需要观看视频。最后尝试完成课前问题列表并提交。

1.1 学习目标

  1. 理解与掌握Java I/O流编程技术:能区分与使用字节流、字符流读写数据,掌握组合过滤流的编程模式。
  2. 掌握使用Java操作文件系统。掌握File、Path、Paths、Files类的用途。了解RandomAccessFile的使用。
  3. 了解正则表达式。

1.2 预习任务

  1. 预习课件(两份);
  2. 观看视频:8.2 文件与流简介、8.3 输入输出流基本概念、8.4 File类.

1.3 课前问题列表

  1. 程序可以处理的数据源除了有文件还有哪些?对不同的数据源的共同的操作是什么?
  2. 将对不同数据源中数据的读写抽象为对流的读写,有什么好处?
  3. 二进制文件与文本文件有什么区别?字节流与字符流之间有什么关系?为什么有的文本文件打开会乱码?怎么解决?
  4. 字符与字节之间的关系是什么?尝试使用Visual Studio Code的Hex Editor插件打开一个文本文件。在文本文件中输入"123abc中文"。观察:一个英文字符占几个字节,一个中文字符占用几个字节。在Java程序中,使用字节流怎么将这个文件中的数据正确读取并组装起来。
  5. 有一个stus数组,里面有若干Student对象(String name, int age, boolean gender, double score)。要将这些对象高效率地存储到文件中,需要使用哪些流?使用二进制流与使用字符流将这个数组存储到文件有何不同?使用二进制流与使用字符流从文件中读取并组装成对象有何不同?
  6. 使用什么类可以对文件进行随机存取?读写的单位是什么?为什么不是字符呢?

2.实验

  1. 实验链接:https://www.cnblogs.com/zhrb/p/6834084.html
    • 提前完成“第1次实验”之“0.字节流与二进制文件”请实验课联系助教检查加分

3.课后任务(作业)

本周作业主要以完成实验内容为主。请将上方实验链接中的实验内容完成。

3.1 课后复习指导

  1. 总结:使用Java流编写代码的一般模式(可问AI)。注意:一般要使用 try...catch...finally处理异常。
  2. 熟悉组合过滤流编程模式
    相关代码:InputStreamReaderTest.java
  3. 参考代码:常见的字节流、字符流实现类、其他常用类
    字节流:文件读写: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(复杂,综合案例)
    4.线上课程讨论:(先自己思考并尝试回答,再通过AI寻求答案进行验证)
    • 8.3 什么时候应该使用输入流、什么时候应该使用输出流?
    • 8.3 Java中定义的三个标准输入输出流是什么?它们对应什么?
    • 8.4 NIO.2对NIO的主要改进有哪些?
    • 8.6 什么时候使用字节流?什么时候使用字符流?
    • 8.6 什么类可以将字节流转化为字符流?怎么利用这个类怎么解决乱码问题,尝试给出示例代码。
    • 8.7 使用缓冲流读写可能会造成数据丢失。为什么?
    • 8.9 一个网页文件(html)包含很多链接。如何结合使用Java流技术与jsoup编程抽取出其中的所有链接?尝试按步骤说明

3.2 在线学习平台

  1. 视频
    8.5 字节流
    8.6 字符流
    8.7 缓冲流
  2. 章节测验
    限时完成:章节测验7(异常)。

3.3 课堂派(案例4-使用文件改造学生管理或购物车系统)

案例4:改造学生管理系统或购物车系统,添加基于文本文件或基于二进制文件的存储系统。请使用Markdown格式编写此报告。完成后检查加分。

3.4 课程设计选题

参考[Java课程设计](https://www.cnblogs.com/zhrb/p/6872265.html)进行课程设计选题。可使用AI辅助完成选题、初步设计、难度评估、人员分组。最终使用报告的模式初步完成。

拓展

课外阅读:查询如何通过与AI大模型工具进行多轮对话迭代完成复杂任务。

posted on 2025-11-11 09:54  zhrb  阅读(0)  评论(0)    收藏  举报