




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验 1 学读英文单词 1 相关知识点 当程序需要读取磁盘上的数据或将程序中得到数据存储到磁盘时 就可以使用输入 输 出流 简称 I O 流 I O 流提供一条通道 用户可以通过该通道读取 源 中的数据或把数 据传送到目的地 I O 流中的输入流的指向称作源 程序通过指向源的输入流读取源中的数 据 输出流的指向称作目的地 程序通过指向目的地的输出流写入数据并把信息传递到目 的地 FileReader 类是 Reader 的子类 该类创建的对象称为文件字符输入流 文件字符输入 流按字符读取文件中的数据 FileReader 流按顺序读取文件 只要不关闭流 每次调用读 取方法时 FileReader 流就会依次读取文件中其余的内容 直到文件的末尾或流被关闭 FileWriter 类是 Writer 的子类 该类创建的对象称为文件字符输出流 文件字符输出流 按字符将数据写入到文件中 FileWriter 流按顺序写入数据 只要不关闭流 每次调用写入 方法时 FileWriter 流就会依次向文件写入内容 直到流被关闭 FileInputStream 是 InputStream 的子类 该类创建的对象称为文件字节输入流 文件字 节输入流按字节读取文件中的数据 FileInputStream 流按顺序读取文件 只要不关闭流 每次调用读取方法时就依次读取文件中其余的内容 直到文件的末尾或流被关闭 FileOutputStream 类是 OutputStream 的子类 该类创建的对象称为文件字节输出流 文件字节输出流按字节将数据写入到文件中 FileOutputStream 流按顺序写入数据 只要不 关闭流 每次调用写入方法 FileOutputStream 流就会依次向文件写入内容 直到流被关闭 BufferedReader 类创建的对象称为缓冲输入流 该输入流的指向必须是一个 Reader 流 称作 BufferedReader 流的底层流 底层流负责将数据读入缓冲区 BufferedReader 流的源 就是这个缓冲区 缓冲输入流再从缓冲区中读取数据 BufferedWriter 类创建的对象称为缓冲输出流 缓冲输出流可以将 BufferedWriter 流和 FileWriter 流连接在一起 然后使用 BufferedWriter 流将数据写入缓冲区 FileWriter 流作为 BufferedWriter 的底层流 负责将数据写入最终目的地 2 实验目的 掌握字符输入流和输出流的用法 3 实验要求 编写一个 Java 应用程序 其要求如下 1 程序可以将一个由英文单词组成的文本文件读入到程序中 2 单击 下一个单词 按钮可以在一个标签中显示程序读入的一个单词 3 单击 发音 按钮可以听到标签上显示的单词的读音 4 用户可以使用文本编辑器编辑程序中用到的三个由英文单词组成的文本文件 training1 txt training2 txt 和 training3 txt 这些文本文件中的单词需要用空格 逗号或回车 符分隔 5 需要制作相应的声音文件 比如 training1 txt 文件包含单词 hello 那么在当前 应用程序的运行目录中需要有 hello wav 格式的声音文件 4 程序效果示例 5 程序模板 按模板要求 将 代码 1 代码 5 替换为 Java 程序代码 模板 1 StudyMainClass java public class StudyMainClass public static void main String args new StudyFrame 模板 2 EnglishWord java import java io import java util StringTokenizer public class EnglishWord public StringBuffer getEnglishWord File file StringBuffer englishWord new StringBuffer try FileReader inOne 代码 1 创建指向文件 f 的 inOne 的对象 BufferedReader inTwo 代码 2 创建指向文件 inOne 的 inTwo 的对象 String s null int i 0 while 代码 3 null inTwo 读取一行 englishWord append s catch Exception e return englishWord 模板 3 StudyFrame java import java awt import java awt event import java io import javax sound sampled import javax swing import java util regex public class StudyFrame extends JFrame implements ItemListener ActionListener Runnable EnglishWord english JComboBox choice JButton getWord voiceWord JLabel showWord String trainedWord null Clip clip null Tread voiceThread int k 0 JPanel pCenter CardLayout mycard JTextArea textHelp JMenuBar menubar JMenu menu JMenuItem help Pattern p 模式对象 Matcher m 匹配对象 public StudyFrame english new EnglishWord choice new JComboBox choice addItem choice addItem training1 txt choice addItem training2 txt choice addItem training3 txt showWord new JLabel JLabel CENTER showWord setFont new Font 宋体 Font BOLD 24 showWord setBackground Color green getWord new JButton 下一个单词 voiceWord new JButton 发音 voiceThread new Thread this choice addItemListener this voiceWord addActionListener this getWord addActionListener this JPanel pNorth new JPanel pNorth add new JLabel 选择一个英文单词组成的文件 pNorth add choice add pNorth BorderLayout NORTH JPanel pSouth new JPanel pSouth add getWord pSouth add voiceWord add pNorth BorderLayout SOUTH pCenter new JPanel mycard new CardLayout pCenter setLayout mycard textHelp new JTextArea pCenter add word showWord pCenter add help textHelp add pCenter BorderLayout CENTER menubar new JMenuBar menu new JMenu 帮助 help new JMenuIter 关于学单词 help addActionListener this menu add help menubar add menu setSize 350 220 setVisible true setDefaultCloseOperation JFrame EXIT ON CLOSE validate String regex s a zA Z s 0 匹配单词的正则表达式 p Ppile regex Pattern MULTILINE 初始化模式对象 public void itemStateChanged ItemEvent e String fileName String choice getSelectionItem File file new File fileName m p matcher english getEnglishWord file mycard show pCenter word public void actionPerformed ActionEvent e if e getSource getWord boolean boo m find if boo trainedWord m group showWord setText trainedWord else showWord setText 训练完毕 if e getSource voiceWord if voiceThread isAlive voiceThread new Thread this try voiceThread start catch Exception exp if e getSource help mycard show pCenter help try File helpFile new File help txt FileReader inOne 代码 4 创建指向文件 helpFile 的 inOne 的对象 BufferedReader inTwo 代码 5 创建指向文件 inOne 的 inTwo 的对象 String s null while s inTwo readLine null textHelp append s n inOne close inTwo close catch IOException exp public void run voiceWord setEnabled false try if clip null clip close clip AudioSystem getClip File voiceFile new File showWord getText trim wav clip open AudioSystem getAudioInputStream voiceFile catch Exception exp clip start voiceWord setEnabled true 6 实验指导 1 BufferedReader 对象调用 readLine 方法可读取文件中的一行内容 2 BufferedWriter 对象调用 newLine 方法可向文件写入回行 3 播放声音可以使用 javax sound sampled 包中的 AudioSystem 类 该类调用 static 方法 public Clip getClip 可以返回一个 Clip 对象 AudioSystem 类调用 static 方法 getAudioInputStream File file 可以返回一个指向文件的 AudioInputStream 音频流对象 Clip 对象调用 void open AudioInputStream stream 可以打开参数 stream 指定的音频流 7 实验后的练习 参照本实验编写一个学读汉字的程序 实验 2 克隆日期 1 相关知识点 ObjectInputStream 类和 ObjectOutputStream 类创建的对象分别被称为对象输入流和对 象输出流 对象输出流可以将一个对象写入输出流并送往目的地 对象输入流可以从源中 读取一个对象到程序中 当使用对象流写入或读入对象时 为了保证能把对象写入到文件 并正确读回到程序中 一定要保证对象时序列化的 一个类如果实现了 Serializable 接口 那么这个类创建的对象就是序列化的对象 Serializable 接口中的方法对程序是不可见的 因此实现该接口的类不需要实现额外的方法 使用对象流很容易获取一个序列化对象 只需将该对象写入到对象输出流 然后用对 象输入流读回的对象就是原对象的一个克隆 2 实验目的 掌握对象流的用法 3 实验要求 编写一个 Java 应用程序 将一个 Calendar 对象写入文件 然后按顺序读出该对象 并 验证读出的对象是原始对象的克隆 4 程序效果示例 5 程序模板 按模板要求 将 代码 1 代码 5 替换为 Java 程序代码 模板 ObjectExample java import java util import java io public class ObjectExample public static void main String args Calendar calendar Calendar getInstance calendar set 1949 9 1 try File f new File a txt FileOutputStream fileOut new FileOutputStream f ObjectOutputStream objectOut 代码 1 创建指向文件 fileOut 的对象输出 流 代码 2 objectOut 写对象 calendar 到文件 FileInputStream fileIn new FileInputStream f ObjectInputStream objectIn 代码 3 创建指向文件 fileIn 的对象输入流 Calendar cloneCalendar 代码 4 objectIn 读出对象 代码 5 cloneCalendar 将时间设置为当前本地机器的时间 int 年 calendar get Calendar YEAR 月 calendar get Calendar MONTH 1 日 calendar get Calendar DAY OF MONTH System out printf calendar 的日期 d d d 年 月 日 年 cloneCalendar get Calendar YEAR 月 cloneCalendar get Calendar MONTH 1 日 cloneCalendar get calendar DAY OF MONTH System out printf ncloneCalendar 的日期 d d d 年 月 日 catch Exception event System out println event 6 实验指导 Java 提供的绝大多数对象都是序列化的 一个类如果实现了 Serializable 接口 那么这 个类创建的对象就是序列化的对象 如 Calendar 类就实现了 Serializable 接口 Serializable 接口中的方法对程序是不可见的 因此实现该接口的类不需要实现额外的方法 当把一个 序列化的对象写入到对象输出流时 JVM 就会实现 Serializable 接口中的方法 并按一定格 式的文本将对象写入到目的地 7 实验后的练习 编写一个 Student 类 将该类创建的若干个对象写入到文件 然后读出这些对象 实验 3 读取 ZIP 文件 1 相关知识点 ZIP 文件是一种流行的档案文件 可以将若干个文件压缩到一个 ZIP 文件中 使用 ZipInputStream 类创建的输入流对象可以读取压缩到 ZIP 文件中的各个文件 即解 压 假设要解压一个名为 book zip 的文件 首先使用 ZipInputStream 的构造方法 public ZipInputStream InputStream in 创建一个对象 in 例如 ZipInputStream in new ZipInputStream new FileInputStream book zip 然后使用 ZipInputStream 对象 in 找到 book zip 中的下一个文件 例如 ZipEntry zipEntry in getNextEntry 那么 in 调用 read 方法就可以读取该文件 2 实验目的 掌握 ZipInputStream 流的使用 3 实验要求 读取 book zip 文件 并将 book zip 文件中含有的文件重新存放到当前目录中的 book 文 件夹中 即将 book zip 文件的内容解压到 book 文件夹中 4 程序效果示例 程序运行效果 5 程序模板 上机调试下列模板 模板 ReadZipFile java import java io
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年美德防诈测试题及答案
- 2025年房地产估价师案例与分析考试真题及答案
- 2025广东广州市黄埔区龙湖街道招聘党建专职组织员、政府聘员3人考试参考题库附答案解析
- 节能知识宣传培训课件
- 2025年社区零售业态创新与数字化运营模式创新对社区公共服务效能提升实践研究报告
- 合作学习:革新高职高专英语课堂的有效路径
- 教师招聘之《幼儿教师招聘》考试押题卷附答案详解(考试直接用)
- 教师招聘之《小学教师招聘》通关模拟卷含完整答案详解(各地真题)
- 教师招聘之《小学教师招聘》题库汇编附答案详解
- 2025年教师招聘之《小学教师招聘》考前冲刺模拟题库及答案详解【真题汇编】
- 设备安装、维修、调试、验收管理制度
- 医院副主任护师职称竞聘报告
- 2025年人教版新教材数学三年级上册教学计划(含进度表)
- 2025-2030AI辅助药物研发创新趋势分析与投资机会评估报告
- 2025年湖北省武汉市《公共基础知识》事业单位招聘考试国考真题(附答案)
- 2025年新疆投资发展集团有限责任公司人员招聘笔试备考题库含答案详解(夺分金卷)
- 2025秋教科版(2024)小学科学三年级上册教学计划及进度表(2025-2026学年第一学期)
- 融资专员考试题含答案
- 企业诉讼案件管理办法
- 成都数字化档案管理办法
- 《中国儿童幽门螺杆菌感染诊治专家共识(2022)》解读
评论
0/150
提交评论