《Java技术》第九次作业

时间:2022-02-25 21:59:55

《Java技术》第九次作业

(一)学习总结

1.用思维导图对javaIO操作的学习内容进行总结。

《Java技术》第九次作业

2.下面的程序实现了文件的拷贝,但采用的是一个字节一个字节的读写方式,效率很低。使用缓冲区可以减少对文件的操作次数,从而提高读写数据的效率。IO包中提供了两个带缓冲的字节流BufferedInputStream和BufferedOutputStream,查阅JDK帮助文档,修改程序,利用这两个类完成文件拷贝,对比执行效率。

import java.io.*;
public class Test{
public static void main(String args[]) {
FileInputStream in=null;
FileOutputStream out=null;
File fSource=new File("d:"+File.separator+"my.jpg");
File fDest=new File("d:"+File.separator+"java"+File.separator+"my.jpg");
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);
int len=0;
long begintime = System.currentTimeMillis();
while((len=in.read())!=-1){
out.write(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();
}
}
}
}

用BufferedInputStream和BufferedOutputStream方法

import java.io.*;
public class Test{
public static void main(String args[]) {
BufferedInputStream in=null;
BufferedOutputStream out=null;
try {
BufferedInputStream fSource =new BufferedInputStream(new FileInputStream("d:"+File.separator+"my.jpg"));
BufferedOutputStream fDest=new BufferedOutputStream(new FileOutputStream("d:"+File.separator+"java"+File.separator+"my.jpg"));
in=new BufferedInputStream(fSource);
out=new BufferedOutputStream(fDest);
int len=0;
long begintime = System.currentTimeMillis();
while((len=in.read())!=-1){
out.write(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();
}
}
}

}

对比

《Java技术》第九次作业

《Java技术》第九次作业

(二)实验总结

实验内容:
1.宠物商店:在实验八的基础上,增加一个功能,用文件保存每日的交易信息记录。

完成实验内容,代码上传到码云,注意,宠物商店要求务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
格式如下:

  • 程序设计思路:
    1、先设计一个PetItem类,包含number、name、age、cno、price属性,并写出get、set方法。设计一个Administrator类,包含name、mi属性,并写出get、set方法,编写一个验证方法。设计一个SellPetItem类,包含number、name、price、amount、money属性,并写出get、set方法。
    2、设计一个JDBC类,方便AdminDao类往数据库添加数据。
    3、设计数据访问AdminDao类,包含获取所有数据,添加数据,删除数据等方法。
    4、设计服务AdminService类,包含查询服务,添加服务,修改服务,删除服务等方法,查询服务要调用AdminDao类的queryAllData()方法,获取所有数据。
    5、设计WelcomeFrame类,声明一个图片组件和一个按钮组件,设计一个设置窗体的函数,包括窗体大小、窗体位置、标题。添加组件方法,包括按钮组件,标题组件。设计添加监听器方法。设计一个显示管理员界面方法,让它连接到下一个界面。
    6、设计Adminis类,声明一个按钮、两个标签,设计一个设置窗体的函数,包括窗体大小、窗体位置、。添加组件方法,包括按钮组件,标题组件。设计添加监听器方法。设计一个显示管理员界面方法,让它连接到下一个界面。设计一个修改的方法调用Administrator类的验证方法。
    7、设计系统管理界面, AdminDialog类,定义界面使用的组件,使用JTextField组件输入文本,编写构造方法,初始化方法,添加组件,添加监听器,编写查询方法,调用adminService的查询服务,编写添加方法,删除方法,修改方法。
    8、编写工具类,方便WelcomeFrame类调用。
    9、设计主方法,调用WelcomeFrame().setVisible(true),运行项目。

  • 类图

《Java技术》第九次作业

2.完成文件复制操作,在程序运行后,提示输入源文件路径和目标文件路径。

  • 程序设计思路:使用FileInputStream和FileOutputStream方法编写,输出语句提示用户输入源文件路径和目标文件路径。

    (三)代码托管

  • 码云commit历史截图
    《Java技术》第九次作业

    (四)学习进度条

    代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
    目标 5000行 300小时
    第2-4周 100/100 20/20 学习了数组和方法
    第5周 200/300 30/50 学习了String类和StringBuffer类
    第6周 800/1100 40/90 学习了this、static关键字,Singleton模式
    第八周 1200/1700 60/110 继承和多态,抽象方法
    第九周 1500/2000 10/120 接口、工厂设计模式、包装类、匿名内部类、日期类、正则表达式
    第十周 1900/2400 10/130 异常处理、泛型、集合
    第十一周 2500/3000 20/150 用户图形界面、事件处理
    第十二周 500/3500 10/160 JDBC数据库的链接
    第十三周 800/4300 50/210 java io