为了账号安全,请及时绑定邮箱和手机立即绑定

复制一个文件夹里的文件到另一个目录下 (使用队列的方法实现)

最近在由于准备实习,在学android,也会用到Java,所以想实现复制文件夹的功能,当然也参考了别人的代码。这里是我参考的网址:http://blog.csdn.net/etzmico/article/details/7786525/

我发这个文章的主要目的是为了永久性保存我的这个小小成功,用队列的方式又写了一个源文件夹里的所有文件到一个目标目录下的代码,这个目标目录下只有文件,没有文件夹。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream.GetField;

import java.util.LinkedList;
import java.util.Queue;

public class CopyFile2 {

static Queue<File > queue = new LinkedList<File>();

static String  copy_From ="D:\\amu1";//源文件
static String  copy_TO="E:\\amu2";  //目标文件

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub

    File [] get_From=(new File(copy_From)).listFiles();//获取源文件中的文件或目录
    PanDuan(get_From);//判断是文件还是文件夹,如果是文件直接拷贝,
                     //如果是文件夹,加到队列当中

    while(!queue.isEmpty()){

        File getFile=queue.remove();//获取并移除此队列的头,如果此队列为空,则返回 null。
        File [] get=(new File(getFile.getAbsolutePath())).listFiles();
        //File[] files= new File[]{get};
            //files[0]=getFile;
        PanDuan(get);
    }

}

/*
 *                      判断是文件还是是文件夹的函数,如果是文件,直接拷贝,如果是文件夹加入到队列中
 */

private static void PanDuan(File[] get_from) throws IOException {

    // TODO Auto-generated method stub

    for(int i=0;i<get_from.length;i++){

        if(get_from[i].isFile()){

            //调用复制文件的函数
                String toFile = copy_TO +"/"+ get_from[i].getName();   
                copy_File(get_from[i],new File (toFile));
            }

        else if(get_from[i].isDirectory()){

            //Queue<File > queue = new LinkedList<File>();//,如果是文件夹,就加入到队列中

            queue.add(get_from[i]);

        }

    }

}

/

  • 复制文件的函数
    */

private static void copy_File(File from_File, File to_File) throws IOException
{

    FileInputStream infile=new FileInputStream(from_File);//新建输入流
    BufferedInputStream inbuf=new BufferedInputStream(infile);//对输入流进行缓冲

    FileOutputStream outfile=new FileOutputStream(to_File);  //新建输出流
    BufferedOutputStream outbuf=new BufferedOutputStream(outfile);//对输出流进行缓冲

    //缓冲数组
    byte []  bt=new byte[2048];
    int len;
    while  ((len=inbuf.read(bt))!=-1) {

        outbuf.write(bt, 0, len);

    }

    outbuf.flush();    //刷新缓冲

    infile.close();
    inbuf.close();

    outfile.close();
    outbuf.close();

} 

}

点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消