将文件夹合成一个文件、将合成的文件还原成文件夹

public static void main(String[] args) throws Exception {String dir = "C:\\Users\\lei.yan004\\Desktop\\临时文件\\合成测试\\";File dirPath = new File(dir + "待合成目录"); // 要合成的文件夹File saveFile = new File(dir + "待合成目录.txt"); // 合成后的文件保存位置FileWriter fileWriter = new java.io.FileWriter(saveFile, true);BufferedWriter bw = new BufferedWriter(fileWriter);// 将文件夹合成一个文件//mergeDir(dirPath, bw);bw.flush();bw.close();// 将文件还原为文件夹splitDir(dir, "C:\\Users\\lei.yan004\\Desktop\\临时文件\\合成测试\\还原\\", saveFile);
}// 过滤
public static boolean isFilter(File file) {List<String> fileFilter = Arrays.asList(".git",".iml",".class",".jar");List<String> dirFilter = Arrays.asList(".git","target");String name = file.getName();if (file.isFile()) {for (String string : fileFilter) {if(name.endsWith(string)) {return true;}}}if (file.isDirectory()) {if(dirFilter.contains(name)) {return true;}}return false;
}// 合成
public static void mergeDir(File file, BufferedWriter bw) throws Exception {File[] fileArr = file.listFiles();if (null == fileArr || fileArr.length <= 0)// 部分文件夹 无权限访问,返回null{return;}for (File itemFile : fileArr) {if(isFilter(itemFile)) {continue;}if (itemFile.isFile()) {bw.newLine();bw.write("file-name:" + itemFile.getPath());FileReader fr = new FileReader(itemFile);BufferedReader bf = new BufferedReader(fr);String line;while ((line = bf.readLine()) != null) {bw.newLine();bw.write(line);}bw.flush();fr.close();bf.close();}if (itemFile.isDirectory()) {bw.newLine();bw.write("directory-name:" + itemFile.getPath());bw.flush();mergeDir(itemFile, bw);}}
}// 还原
public static void splitDir(String oldPath, String newPath, File file) {try {FileReader fr = new FileReader(file);BufferedReader bf = new BufferedReader(fr);String line;// 按行读取字符串BufferedWriter bw = null;boolean isfirst = true;while ((line = bf.readLine()) != null) {if (line.startsWith("file-name:")) {if (bw != null) {bw.flush();}String fileDir = line.substring("file-name:".length(), line.lastIndexOf("\\"));String fileName = line.substring(line.lastIndexOf("\\") + 1);fileDir = fileDir.replace(oldPath, newPath);if (!new File(fileDir).exists()) {new File(fileDir).mkdirs();}File newFile = new File(fileDir + File.separator + fileName);newFile.createNewFile();FileWriter fileWriter = new FileWriter(newFile, true);bw = new BufferedWriter(fileWriter);isfirst = true;} else if (line.startsWith("directory-name:")) {String fileDir = line.substring("directory-name:".length());fileDir = fileDir.replace(oldPath, newPath);if (!new File(fileDir).exists()) {new File(fileDir).mkdirs();}} else {if (bw != null) {if (!isfirst) {bw.newLine();}bw.write(line);bw.flush();isfirst = false;}}}bf.close();fr.close();if (bw != null) {bw.flush();bw.close();}} catch (IOException e) {e.printStackTrace();}
}

将文件夹合并成一个文件和将合成的文件还原成文件夹相关推荐

  1. python多个文件夹合并成一个文件夹

    文件夹[风景]里面有100多个子文件夹,每个子文件夹下面又有20多张图片. 需求是要把所有子文件夹里面的图片合并到新的文件夹. 实现代码: import os import shutilsource_ ...

  2. 手机备忘录便签怎么转换成文件发出

    手机备忘录.便签是我们常用的记事工具,我们平时需要保存的文字.图片.声音.文件内容都在便签.备忘录里.手机备忘录.便签用得时间久了,便签.备忘录本身就像一个资料库了.如果想把便签.备忘录里的内容整理成 ...

  3. python创建多个文件夹合并_在python中如何将多个文件夹合并到一个文件夹中?

    我需要将多个文件夹合并到一个文件夹中,并考虑到它们基于时间的顺序,为此我尝试了:import os import shutil DestFolder = 'C:\\Users\\user\\Folde ...

  4. 解决移动桌面文件夹和文档文件夹时出现两个文件夹合并的问题

    将桌面文件夹和文档文件夹更改位置时,出现了两个文件夹合并,并且文档文件夹里的文件全部出现在了桌面上的问题. 针对这个问题,可以试试这个解决方法: 步骤1. win+R打开cmd,输入regedit指令 ...

  5. 多个 EXCEL 文件如何合并成一个文件

    同一文件夹里有多个格式相同的EXCEL文件,需要把它们合并到一个EXCEL文件中,应该怎么做呢? 自己编写程序来实现?尽管好些程序语言都提供了读取EXCEL文件的API,但还是需要写程序去打开每一个文 ...

  6. 【Python】多个文件夹合并到一个文件夹中

    将两个黑框中的文件合并到统一的文件夹中.将两个黑框中的system合并,user合并,然后将合并的后的sys和user在合并一次最终形成右图结构. import os import shutildef ...

  7. python 将文件描述符包装成文件对象

    有一个对应于操作系统上一个已打开的I/O 通道(比如文件.管道.套接字等)的整型文件描述符,你想将它包装成一个更高层的Python 文件对象. 一个文件描述符和一个打开的普通文件是不一样的.文件描述符 ...

  8. 【原】Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...

    这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 生成Excel文件的方法,见:[原].Net创建Excel文件(插入数据.修改格式.生成图表)的方法 先试用Response.W ...

  9. 《Python Cookbook 3rd》笔记(5.18):将文件描述符包装成文件对象

    将文件描述符包装成文件对象 问题 你有一个对应于操作系统上一个已打开的 I/O 通道 (比如文件.管道.套接字等)的整型文件描述符,你想将它包装成一个更高层的 Python 文件对象. 解法 一个文件 ...

最新文章

  1. UVA - 1045 The Great Wall Game(二分图最佳完美匹配)
  2. springboot结果集空值处理
  3. springboot实现增量备份_SpringBoot canal数据同步解决方案
  4. 我用着不舒服的东西, 就TM是不合理的东西!!!
  5. ipython vim_python 之ubuntu开发环境vim 和 ipython
  6. 请写出至少五个块级元素_Java 面试题(五)
  7. 在线等比数列项数生成器
  8. python运行脚本被杀死_Python脚本被杀死
  9. 淘宝发布宝贝提示“您的消保保证金额度不足,已启动到期保障”
  10. Qt基于FFmpeg解码本地视频后再编码
  11. c语言中整形的最大最小值,c语言整数和浮点数的最大最小值
  12. Windows特殊字符
  13. nginx-http重定向到https配置
  14. p5405 [CTS2019]氪金手游
  15. C语言|博客作业08
  16. 暑假的计划【写在这里,监督自己】
  17. 精准引流客源的方法 129种引流方法全方位操作
  18. Office文档在线编辑的实现
  19. windows7系统能安MATLAB几,matlab7.0安装win7系统详细使用方法
  20. 山外论坛每日一贴的学习

热门文章

  1. VB编程:DoEvents将控制权交给系统,防止无限循环-14
  2. 2022SDUT知到/智慧树----C语言第七章测试题解
  3. 「 机器人/自动化控制 」“SCI检索论文与会议”小结
  4. 最新入境缅甸的签证办理攻略来了
  5. C语言详解:函数递归专题
  6. AT1225 稻草人(cdq分治+二分)
  7. cesium加载山东天地图
  8. SpringCloud之Sleuth全链路日志跟踪
  9. 技术管理(一)——角色转变!如何从管理好自己到管理好团队
  10. 群晖NAS教程(十九)、利用Docker安装青龙面板(京东薅羊毛)