(一)学习总结
参考资料: XMind。
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+"pet.txt");
File fDest=new File("d:"+File.separator+"java"+File.separator+"pet.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);
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();
}
}
}
}
修改后的代码
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 + "pet.txt");
File fDest = new File("d:" + File.separator + "java" + File.separator
+ "pet.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();
}
}
}
3.其他需要总结的内容。
((二)实验总结
实验内容:
1.宠物商店:在实验八的基础上,增加一个功能,用文件保存每日的交易信息记录。
设计思路:增加销售记录,在vo包中创建SellPetItemp类,增加变量mone y,设置它的set,get方法
遇到的问题:在保存销售记录时注意捕获异常
try {
in = new FileInputStream(name); //判断本地是否存在文件
if(in != null){
in.close();
createFile(name,true,pet); // 存在文件,采用修改文件方式
}
} catch (FileNotFoundException e) {
createFile(name,false,pet); // 不存在文件,采用新建文件方式
} catch (IOException e) {
e.printStackTrace();
}
2.完成文件复制操作,在程序运行后,提示输入源文件路径和目标文件路径。
用数组存到缓冲区效率高
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);
程序设计思路:
(三)代码托管(务必链接到你的项目)
[email protected]:hebau_cs15/javacs02hxdd.git