IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)
Posted 小王Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)相关的知识,希望对你有一定的参考价值。
题目:利用IO流实现文件夹拷贝,需拷贝子文件夹以及子文件夹的文件。
解题思路:利用递归实现文件夹拷贝,一层层往里进,看是否有文件,若有,执行前一遍复制的操作,这样就达到了拷贝文件夹以及子文件夹。
话不多说,上代码:
public class FileCopy
public static void main(String[] args)
//源文件
String path = "C:/Users/Desktop/0611";
//目标地址
String path2 = "C:/Users/Desktop/0611(复制版)";
//将目标路径放入File类中
File f2 = new File(path2);
//检测文件路径是否存在,若不存在,则创建文件夹,防止文件未找到异常导致程序崩溃
if (!f2.exists())
//创建文件夹
f2.mkdirs();
//调用方法,传入实参,开始拷贝文件夹
copyFile(path, path2);
/**
* 拷贝文件,利用递归拷贝子文件夹以及文件
* @param path1 源文件路径
* @param path2 目标文件路径
*/
public static void copyFile(String path1, String path2)
File file = new File(path1);
File[] files = file.listFiles();
for (File file2 : files)
if (file2.isDirectory())
String newPath = path2 + File.separator + file2.getName();
File f2 = new File(newPath);
System.out.println(f2.getAbsolutePath());
f2.mkdirs();
System.out.println("创建成功<sub>");
copyFile(file2.getAbsolutePath(), newPath);
if (file2.isFile())
try
InputStream is = new FileInputStream(file2.getAbsolutePath());
int num = is.available();
byte[] bs = new byte[num];
OutputStream os = new FileOutputStream(path2 + File.separator + file2.getName());
int realLen = is.read(bs, 0, bs.length);
os.write(bs, 0, realLen);
System.out.println("写入成功</sub>");
if (is != null)
is.close();
if (os != null)
os.close();
catch (FileNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
如果你觉得这篇文章有用,那就支持一下吧,感谢点赞的老铁
以上是关于IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)的主要内容,如果未能解决你的问题,请参考以下文章