题目:复制一个文件夹下面的文件,使用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(); } }}复制成功后:如果你在运行该软件,再次复制,会报错:
新闻热点
疑难解答