《Java技术》第九次作业
(一)学习总结
1.用思维导图对javaIO操作的学习内容进行总结。
- 参考资料: XMind。
2.下面的程序实现了文件的拷贝,但采用的是一个字节一个字节的读写方式,效率很低。使用缓冲区可以减少对文件的操作次数,从而提高读写数据的效率。IO包中提供了两个带缓冲的字节流BufferedInputStream和BufferedOutputStream,查阅JDK帮助文档,修改程序,利用这两个类完成文件拷贝,对比执行效率。
public BufferedInputStream(InputStream in)
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(); } } }}
public BufferedOutputStream(OutputStream out)
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); byte[] buff=new byte[1024]; int len=0; long begintime = System.currentTimeMillis(); while((len=in.read(buff))!=-1){ out.write(buff,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(); } } } }
(二)实验总结
1.实验内容:
(1).宠物商店:在实验八的基础上,增加一个功能,用文件保存每日的交易信息记录。 (2).完成文件复制操作,在程序运行后,提示输入源文件路径和目标文件路径。 完成实验内容,代码上传到码云,注意,宠物商店要求务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。- 程序设计思路:新建SellPetItem类,存储用户购买信息,新建FileUtils类将用户购买信息存储到本地文件中,如果存在文件,采用修改文件的方式,如果不存在文件,采用新建文件的方式。
- 类图结构:
实验问题分析:
问题1:在写购买方法时,出现“未对参数类型String,int定义运算符”错误 原因:此时,PetItem类里的getNum方法是String类型的,而同它比较大小的num为int类型的。PetItem Pet = adminService.queryData(number); if(Pet.getNum() < num){ JOptionPane.showMessageDialog(this, "现货没有这么多了。请重新输入"); buyNumText.setText(""); buyNumText.requestFocus(); }
解决方案:将PetItem类里的getNum方法改为int类型的。
(三)
- 码云commit历史截图