java中文件夹复制递归_复制一个文件夹里的文件到另一个文件夹 (使用递归的方法实现)...

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

public class CopyFile {

//public class MainActivity extends Activity {

//Button copyButton;

static String copy_From ="E:\\amu1";//源文件

static String copy_TO="E:\\amu2"; //目标文件

public static void main(String args[]) throws IOException {

// @Override

// protected void onCreate(Bundle savedInstanceState) {

// super.onCreate(savedInstanceState);

// setContentView(R.layout.activity_main);

// copyButton=(Button) findViewById(R.id.button1);

//

// copyButton.setOnClickListener(new OnClickListener() {

//

// @Override

// public void onClick(View arg0) {

// // TODO Auto-generated method stub

/*如果SD卡已经插入,则正常运行

* 否则抛出错误

*

*

*/

(new File(copy_TO)).mkdirs(); // 不存在就新建目标文件

File [] get_From=(new File(copy_From)).listFiles(); //获取源文件中的文件或目录

for (int i=0;i

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

//调用复制文件的函数

String toFile = copy_TO +"/"+ get_From[i].getName(); //写的时候这里少了个/.导致不能复制

copy_File(get_From[i],new File (toFile));

}

if(get_From[i].isDirectory()){

//复制文件的目录

String from_Directory=copy_From+File.separator+get_From[i].getName();

String to_Directory=copy_TO+File.separator+get_From[i].getName();

copy_Directory(from_Directory,to_Directory);//调用复制文件夹的函数

}

}

}

//}

//});

private static void copy_Directory(String fromDirectory, String toDirectory)throws IOException {

//if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

// TODO Auto-generated method stub

//新建目标文件

new File(toDirectory).mkdirs();

//获取文件夹或者文件目录

File[] files=(new File(fromDirectory)).listFiles();

for(int i=0;i

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

//如果是文件

File fromFile=files[i];

File toFile=new File(new File(toDirectory).getAbsolutePath()+File.separator+files[i].getName());

copy_File(fromFile, toFile);

}

if(files[i].isDirectory()){ //如果是文件夹

String fromDir=fromDirectory+"/"+files[i].getName();

String toDir=toDirectory+"/"+files[i].getName();

copy_Directory(fromDir, toDir);

}

}

//Toast.makeText(this, "复制成功", Toast.LENGTH_LONG).show();

//}

//Toast.makeText(this, "复制失败", Toast.LENGTH_LONG).show();

}

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

//if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

// TODO Auto-generated method stub

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();

//Toast.makeText(this, "复制成功", Toast.LENGTH_LONG).show();

//}

//Toast.makeText(this, "复制失败", Toast.LENGTH_LONG).show();

}

//Toast.makeText(this, "复制失败", Toast.LENGTH_LONG).show();

}

//

// @Override

// public boolean onCreateOptionsMenu(Menu menu) {

// // Inflate the menu; this adds items to the action bar if it is present.

// getMenuInflater().inflate(R.menu.main, menu);

// return true;

// }

加粗文字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值