题目:复制一个文件夹下面的文件,使用InputStream和OutputStream方法;
思路:
1、创建两个对象,将旧被复制的源文件file1和新复制过来的生成文件file2;
2、调用自定义复制方法;
自定义方法:a)旧被复制文件为空,不存在,不是文件;
b)新复制文件夹不存在,创建该路径;
c)开始一个字节一个字节顺序复制传输(系统自己保证顺序传输)
3、加入程序运行时间;
package A_January;
import java.io.*;
/**
* Created by Administrator on 17-1-19.
*/
public class FileTest2 {
public static void main(String[] args) {
//实现一个文件的拷贝;
//将源文件f1复制到f2目录中;
//文件存放目录,真假不知;这里仅仅是路径(目录);
// 存在不存在不一定,也有人被中介要求填写信息,随口编了一个假的地址;
File file1=new File("E:\\玉置浩二 - 上を向いて歩こう.mp3");
File file2=new File("E:\\电影\\☆中国电影\\玉置浩二 - 上を向いて歩こう.mp3");//第2个文件路径;
long startTime=System.currentTimeMillis();//程序开始时间,用以记录程序开始时间(按照毫秒计)
copyFile(file1,file2);//调用下文中,自定义的copyFile方法;
long endTime=System.currentTimeMillis();//程序结束时间;用以记录程序结束时间;
System.out.println(endTime-startTime);//输出时间差,计算程序运行时间;
}
//自定义copy复制方法;
public static void copyFile(File fileFrom,File fileTo){
//如果源文件为空||不存在||不是文件夹;
if (fileFrom==null||!fileFrom.exists()||!fileFrom.isFile()){
System.out.println("拷贝失败");
return;//结束,跳出,返回;
}
File parent=new File(fileTo.getParent());//定义父目录
// 如果父文件夹不存在;
if (!parent.exists()){
//创建该文件夹;
parent.mkdirs();
}
FileInputStream fis=null;
FileOutputStream fos=null;
try {
//为文件类型分配内存空间;
fis=new FileInputStream(fileFrom);
fos=new FileOutputStream(fileTo);
//读取 fis.read();//读取一个字节
//全真循环;
while(true){
//系统从输入流读取数据,然后向输出流写出数据;
int data=fis.read();
fos.write(data);
//当读取的字节为-1时候,(系统默认-1是输入流和输出流的结尾),程序结束,停止全真循环;
if(data==-1){
break;
}
}
System.out.println("拷贝成功");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制成功后:
如果你在运行该软件,再次复制,会报错: