Java第九次作业--输入输出流和文件操作
Java第九次作业--输入输出流和文件操作
(一)学习总结
1.用思维导图对本周的学习内容进行总结。

2.下面的程序实现了文件的拷贝,但采用的是一个字节一个字节的读写方式,效率很低。使用缓冲区可以减少对文件的操作次数,从读写数据的效率。IO包中提供了两个带缓冲的字节流BufferedInputStream和BufferedOutputStream,查阅JDK帮助文档,修改程序,利用这两个类完成文件拷贝,对比执行效率。
修改后的程序代码:
import java.io.*;
public class Test1 {
public static void main(String args[]) {
FileInputStream in = null;
FileOutputStream out = null;
File fSource = new File("d:" + File.separator + "my.txt");
File fDest = new File("d:" + File.separator + "java" + File.separator
+ "my.txt");
if (!fSource.exists()) {
System.out.println("源文件不存在");
System.exit(1);
}
if (!fDest.getParentFile().exists()) {
fDest.getParentFile().mkdirs();
}
try {
in = new FileInputStream(fSource);
out = new FileOutputStream(fDest);
byte[] b = new byte[1024];
int len = 0;
long begintime = System.currentTimeMillis();
while ((len = in.read(b)) != -1) {
out.write(b,0,len);
}
long endtime = System.currentTimeMillis();
System.out.println("文件拷贝完成,耗时" + (endtime - begintime) + "毫秒");
} catch (Exception e) {
System.out.println("文件操作失败");
} finally {
try {
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
两种程序的运行结果分别为:
文件拷贝完成,耗时632毫秒
文件拷贝完成,耗时2毫秒
总结:
BufferedOutputStream 是缓冲输出流。它继承于FilterOutputStream。 BufferedOutputStream 的作用是为另一个输出流提供“缓而冲功能”。
这种方法效率很高,耗时短,而数组byte要一个一个移动,没有缓冲,;但是如果没有这个缓冲,必须再从输入流中按字节读取,所以时间效率将大大降低。
3.其他需要总结的内容。
事件源:
(1)事件源是一个产生(或触发)事件的对象。当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)。如果某个组件(对象)希望得到事件源产生的事件,就需要在这个事件源上注册。
事件:
(2)事件就是承载事件源状态改变时的信息对象。java.awt.event包和javax.swing.event包中定义了各种事件类,类名以Event结尾。
(3)事件监听器接口
API对于每种事件都定义了对应的接口,接口中定义了处理该事件的方法,这些接口称为事件监听器接口。监听器接口以Listener结尾。如ActionListener接口处理ActionEvent事件。事件源产生一个事件,可以传送给事件监听者处理。事件监听者实际上就是一个类,该类实现了某个事件监听器接口,对接受到的事件进行处理。
例如:
添加监听器:
public AdminDialog(Frame owner,boolean modal){
super(owner,modal);
this.init(); //初始化
this.addComponent(); //添加组件
this.addListener(); //添加监听器
queryPet(); //创建对象时显示数据
}
删除按钮监听:
delBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
delPet(); //调用删除方法
修改按钮监听
updateBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
updatePet(); //调用修改方法
}
});
(二)实验总结
1.实现实验七的宠物商店的文件保存等文件操作功能。
实验内容:
1.宠物商店:在实验八的基础上,增加一个功能,用文件保存每日的交易信息记录。
2.完成文件复制操作,在程序运行后,提示输入源文件路径和目标文件路径。
进入欢迎界面:

- 实验设计思路:
1.增加SellPetItem类,FileUtils类。
2.添加新方法实现新建销售文件 并保存内容。
3.定义欢迎窗口类,用工具类实现窗口组件的居中显示和显示窗口图标,把界面编辑好。但是要修改普通用户界面的购买按钮监听器调用的购买方法
4.用户输入源文件路径后判断文件是否存在。如果源文件存在的话,继续输入目标路径,并在目标路径查重。
5.通过缓冲区实现文件的复制操作。
(三)代码托管
- 码云commit历史截图

(四)学习进度条
| 代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 | |
|---|---|---|---|
| 目标 | 5000行 | 300小时 | |
| 第2-4周 | 200/200 | 20/20 | java基本语法 |
| 第5周 | 150/350 | 20/40 | 学习了构造函数,各种基本调用方法。 |
| 第6周 | 150/350 | 30/70 | 运行 |
| 第7周 | 500/850 | 15/85 | 面向对象编程的知识点(封装、继承和多态) |

浙公网安备 33010602011771号