最近在由于准备实习,在学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();
}
}