写点什么

IO 流篇 -- 基于 io 流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)满满的干货

作者:Bug终结者
  • 2022 年 8 月 05 日
  • 本文字数:1066 字

    阅读完需:约 3 分钟

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("创建成功~"); 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("写入成功~"); 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(); } } } } }
复制代码


如果你觉得这篇文章有用,那就支持一下吧,感谢点赞的老铁😜🤞

发布于: 刚刚阅读数: 4
用户头像

Bug终结者

关注

励志成为一个优秀的开发者~ 2021.12.09 加入

星星之火,可以燎原

评论

发布
暂无评论
IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)满满的干货_Java static_Bug终结者_InfoQ写作社区