湖南科技职业学院软件职业技术学院
教师课时授课计划
教师姓名: 授课班级: 授课课时:6
课程名称:JAVA程序设计 第 8 课 教学循环号:6-1
课题
在磁盘上存储数据
各教学环节课时分配
讲授
4 课时
有指导的实践
2 课时
独立实践
0 课时
教学内容
1、用File类打开文件
2、用RandomAccessFile类读和写文件
3、用Stream类实现I/O操作
重点
用Stream类实现I/O操作
难点
用RandomAccessFile类读和写文件
教具
多媒体
作业
独立实践
授课日期
(校历)
第 4 周星期 4 第 1-4节
第 4 周星期 5 第 5-6 节
第 周星期 第 节
第 周星期 第 节
课后小结
可用File 或 RandomAccessFile类把数据写到文件
用File 类访问文件和目录对象
用 RandomAccessFile类读入或写出到文件中随机位置
流是通过通信路径从源移动到目的地的一串字节
InputStream 和 OutputStream 是抽象超类,用于读、写到字节流
详细教学过程附后
详细教学过程:
一、教学目标陈述(5分钟)
用File 和 RandomAccessFile 类读和写文件
用stream 类执行I/O 操作
二、JAVA中文件和流的概念(25分钟)
1、流
用Java 来处理所有的 I/O 操作
是字节序列
2、文件输入和输出
Java 支持基于文件的输入和输出操作的流
用 File, RandomAccessFile, 及 FileDescriptor类来做
3、File 类
使用主机OS 的命名惯例
允许删除和重命名文件和目录
允许列表目录
4、例子
File fileObject;
fileObject = new File(“JavaFile”);
fileObject = new File(“\\”,”JavaFile”);
File directoryObject = new File(“\\”);
5、Stream 和 File类比较
流用于创建输入和输出链
File 类用于特定的文件操作
三、实例分析(45分钟)
8.D.1 (45分钟)
1、问题的陈述
作为所需功能的规格说明,所有用户需注册站点以利用所提供的性质。创建一个注册的applet。此applet的功能规格说明如下:
applet应接收客户名和口令
这些材料应记录在文件中。
2、确定任务
识别写出到文件的材料
识别写出到文件要用的类和变量名
识别 必须写出数据的文件
识别要处理的异常和关于异常的错误消息
识别接收用户注册材料的控件和它们的变量
写出登录客户材料到文件的代码
创建登录文件
保存、编译、及执行程序
验证功能
3、分析解决问题
识别写出到文件的材料
结果:
客户的名字和口令需存储在文件中
识别类和变量名
RandomAccessFile 类:
用来可读或写到文件中随机的单元
以只读或只写的方式访问文件
提供以下构造符
RandomAccessFile(String pathname, String mode)
RandomAccessFile(File name, String mode)
提供方法如length (), writeBytes(String), 及 seek(int pos)
结果:
为存储客户材料到文件,必须使用 RandomAccessFile类,将用名为“logfile” 的变量来表示此文件
识别必须写出数据的文件
结果:
将记录客户材料的登录文件的名是 “Customer.txt”。为登录文件提供的许可是读和写
识别要处理的异常和关于异常的错误消息
结果:
当写出到文件时可能发生的一个异常是你对此文件没有写许可。因此, IOException 需要被处理,在出现异常时要显示的错误消息是“Cannot write to the customer file”后接此异常对象
识别接收用户注册材料的控件和它们的变量
JPasswordField 类:
类是JTextField 类的子类
提供 getPassword() 方法
信息
控件
变量
显示文本
大小
User name
JTextField
JLabel
textCustName
labelCustName
none
“Customer Login Name:”
10
Default
User Password
JPassword
Field
JLabel
textPassword
labelPassword
none
“Password:”
10
Default
JButton
loginButton
“LOGIN”
Default
写出登录客户材料到文件的代码
代码:
public void actionPerformed(ActionEvent evt) {
//…………
String entry = textCustName.getText() + “:” +
new String(textPassword.getPassword());
try {
RandomAccessFile logFile = new
RandomAccessFile("Customer.txt","rw");
logFile.seek(logFile.length());
logFile.writeBytes(entry); }
//catch exceptions
}
创建登录文件
动作:
RandomAccessFile类的构造符假定:作为参数提供它的文件已经存在。所以,你必须创建名为“Customer.txt” 的空文本。在你第一次执行次程序时,使用 policytool 来设置文件的读和写许可。
4、执行验证
保存、编及执行文件
验证功能
动作:
打入客户登录名的值为“Carol” ,口令为 “password”。打开 “Customer.txt” 文件并检查这些材料是否已写到此文件中
四、指导性练习
8.P.1(45分钟)
1、问题陈述
4.P.2中创建的applet需要修改后进入应用。 应用应存储客户服务执行的性能材料—名字、等级、性能准则、及评估—到文件中。写出并入这些功能到应用的代码。
2、问题分析
3、验证
五、实例分析
8.D.2(45*2分钟)
1、问题的陈述
为接收商人材料创建注册应用。此应用的功能规格说明如下:
应用应接收商人材料,如:名字、地址、电话号码、及商人提供的服务.
这些材料应记录在文件中.
2、确定任务
识别写出到文件的材料
识别写出到文件要用的类和对象名
识别必须写入数据的文件
编写登录商人材料到文件的代码
创建登录文件
保存、编译、及支持程序
验证功能
3、分析解决问题
识别写出到文件的材料
结果:
商人材料,如:名字、地址、电话号码、及商人提供的服务需存储在文件中
识别写出到文件要用的类和对象名
流的类型:
节点流–读或写到特定位置的输入和输出流
Filter流–读写到另一个流的输入和输出流。常用来 增强流功能。
FileInputStream 类:
是节点流
子类java.io.InputStream 类
用来从文件中读入数据字节
包含方法如:int read (), int read (byte[] b), int read (byte[] b, int off, int len), int available (), 及 close () 方法
FileOutputStream 类:
是节点流
子类 java.io.OutputStream 类
用来写出数据字节到文件
包含方法如: void write (), void write (byte[] b), void write (byte[] b, int off, int len), flush (), and close () 方法
PrintStream 类:
是过滤器流
用来写出double, int, 及 String值到目的地
例子:
PrintStream ps=new PrintStream (new FileOutputStream(“Bonus.dat”, true));
String data=textfield.getText();
ps.write(data);
Readers 和 Writers:
用来实现节点和过滤器流
支持Unicode 字符流的读和写
InputStreamReader 和 OutputStreamWriter – 所有readers 和 writers的抽象基类
用来在字节和Unicode 字符流之间的转换数据
实现 Readers and Writers的示例代码:
import java.lang.*;
import java.io.*;
public class ReadWriteFile {
public static void main(String args[]) throws IOException {
InputStreamReader inputReader = new InputStreamReader(System.in);
BufferedReader bufferStream = new BufferedReader(inputReader);
String readString;
do {
System.out.println("\nPlease enter something: ");
System.out.flush();
readString = bufferStream.readLine();
System.out.println("Hello User>This is what you wrote");
System.out.println("> "+readString);
} while (readString.length() != 0);
}
}
结果:
InputStreamReader类的对象名为 “keyreader”
BufferedReader 类的对象名为 “bfreader”
FileOutputStream类的对象名为 “fswriter”。此对象将与必须写出商人材料的文件联系起来
识别必须写入数据的文件
结果
在磁盘上登录文件的名是 “Dealer.txt”。 登录文件要提供的许可是读和写
编写登录商人材料到文件的代码
创建登录文件
动作:
创建名为“Dealer.txt”的一个文本文件。使用策略工具在文件上设置读和写许可
4、执行验证
保存、编译、及执行程序
验证功能
动作:
打商人名的值为 “TalkWorld Inc”, 地址为 “142, Redmond Way, WA”, 电话 号码为 “423-442-3434”, 及提供的服务为 “Discounts”,打开 “Dealer.txt”文件并检查是否材料已经写到此文件
六、指导性练习
8.P.2(45分钟)
1、问题陈述
8.P.1 中创建applet以存储客户服务执行的材料需要修改以并入以下功能:
需加入标号为“Show Performance Details”的按钮到面板
点击此按钮,所有客户服务执行的性能材料需在文本域控件中被显示,该控件放在一个框架内
2、问题分析
3、验证
七、小结 (10分钟)