解决Git无法同步空文件夹的问题
思路:在每个空文件夹下创建空文件,同步后再删除
1 package org.zln.module1.demo1; 2 3 import org.apache.log4j.Logger; 4 5 import java.io.File; 6 import java.io.IOException; 7 8 /** 9 * Created by coolkid on 2015/6/12 0012. 10 */ 11 public class CreateFileInEmptyDir { 12 protected static Logger logger = Logger.getLogger(CreateFileInEmptyDir.class); 13 14 private static final String createFlag = "create"; 15 private static final String fillFileName = "填充文件.txt"; 16 17 public static void main(String[] args) throws IOException { 18 String rootDir; 19 String delFlag; 20 if (null == args||args.length != 2){ 21 throw new RuntimeException("输入参数个数不正确"); 22 }else { 23 rootDir = args[0]; 24 delFlag = args[1]; 25 } 26 logger.debug("对目录:"+rootDir+" 进行"+(createFlag.equals(delFlag)?"创建":"删除")); 27 File rootFile = new File(rootDir); 28 if (createFlag.equals(delFlag)){//默认创建 29 createFileInEmptyDir(rootFile); 30 }else {//删除 31 deleteFillFile(rootFile); 32 } 33 } 34 35 /** 36 * 在跟路径下,遍历所有的目录,如果该目录为空,则创建一个文件 37 * @param rootFile 根目录文件 38 */ 39 private static void createFileInEmptyDir(File rootFile) throws IOException { 40 if (rootFile.isDirectory()){ 41 File[] listFiles = rootFile.listFiles(); 42 if (0 == listFiles.length){ 43 createTxtFile(rootFile,fillFileName); 44 logger.debug(rootFile.getAbsolutePath()+"\t为空目录,创建填充文件"); 45 46 }else { 47 for (int i = 0; i < listFiles.length; i++) { 48 createFileInEmptyDir(listFiles[i]); 49 } 50 } 51 } 52 } 53 54 private static void createTxtFile(File rootFile,String fileName) throws IOException { 55 File newFile = new File(rootFile,fileName); 56 newFile.createNewFile(); 57 } 58 59 /** 60 * 删除指定目录下的填充文件 61 * @param root 62 */ 63 private static void deleteFillFile(File root){ 64 if (root.isDirectory()){//是目录 65 File[] files = root.listFiles(); 66 for (File tempFile:files){ 67 deleteFillFile(tempFile); 68 } 69 }else {//是文件 70 String fileName = root.getName(); 71 if (fillFileName.equals(fileName)){ 72 logger.debug("删除:"+root.getAbsolutePath()); 73 root.delete(); 74 } 75 } 76 } 77 }
依赖jar包
执行脚本:
#进入执行目录 - 程序根目录 cd E:\GitHub\tools\JavaEEDevelop\out\production\Lesson1_JavaSe_Demo1#设置class路径 set CLASSSERVER_HOME=E:\GitHub\tools\JavaEEDevelop\GlobalLibset CLASSPATH=.set CLASSPATH=%CLASSPATH%;%CLASSSERVER_HOME%\log4j\log4j-1.2.17.jarset CLASSPATH=%CLASSPATH%;%CLASSSERVER_HOME%\log4j\log4j-api-2.2.jarset CLASSPATH=%CLASSPATH%;%CLASSSERVER_HOME%\log4j\log4j-core-2.2.jar#根据需求执行指令 #对指定目录及其子目录的空文件夹创建空文件 java org.zln.module1.demo1.CreateFileInEmptyDir E:\GitHub\tools\JavaEEDevelop create #删除创建的空文件 java org.zln.module1.demo1.CreateFileInEmptyDir E:\GitHub\tools\JavaEEDevelop delete
日志配置:
# # Log4J Settings for log4j 1.2.x (via jakarta-commons-logging) # # The five logging levels used by Log are (in order): # # 1. DEBUG (the least serious) # 2. INFO # 3. WARN # 4. ERROR # 5. FATAL (the most serious)# Set root logger level to WARN and append to stdout log4j.rootLogger=DEBUG, stdout,FILE log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n#输出到文件 log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE.Append=true log4j.appender.FILE.File=D:\\log\\Lesson1_JavaSe_Demo1.log log4j.appender.FILE.Threshold=DEBUG log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n log4j.appender.FILE.MaxFileSize=10MB# Print only messages of level ERROR or above in the package noModule. log4j.logger.noModule=FATAL# OpenSymphony Stuff log4j.logger.freemarker=INFO log4j.logger.com.opensymphony=INFO log4j.logger.com.opensymphony.xwork2.ognl=ERROR log4j.logger.org.apache.struts2=WARN log4j.logger.org.apache.struts2.components=WARN log4j.logger.org.apache.struts2.dispatcher=WARN log4j.logger.org.apache.struts2.convention=INFO# Spring Stuff log4j.logger.org.springframework=WARN
优化:创建与删除可以同时进行
添加一个方法
1 /** 2 * 创建或删除空文件在指定路径及其子路径下 3 * @param rootFile 根路径 4 */ 5 private static void createOrDeleteFile(File rootFile) throws IOException { 6 if (rootFile.isDirectory()){ 7 File[] listFiles = rootFile.listFiles(); 8 if (0 == listFiles.length){ 9 createTxtFile(rootFile,fillFileName); 10 logger.debug(rootFile.getAbsolutePath()+"\t为空目录,创建填充文件"); 11 }else if (1 < listFiles.length){ 12 for (File temp:listFiles){ 13 if (temp.isDirectory()){ 14 createOrDeleteFile(temp); 15 }else { 16 if (fillFileName.equals(temp.getName())){ 17 logger.debug("填充文件失效,删除:"+temp.getAbsolutePath()); 18 temp.delete(); 19 } 20 } 21 } 22 } 23 } 24 }
转载于:https://www.cnblogs.com/sherrykid/p/4572625.html
解决Git无法同步空文件夹的问题相关推荐
- java压缩文件夹(含有空文件夹)
两种实现方式: java.util.zip.ZipOutputStream org.apache.tools.ant 注意 最初采用java.util.zip.ZipOutputStream的方式, ...
- 服务器空文件夹无法删除怎么办,空的文件夹无法删除怎么办 空的文件夹无法删除的原因【图文】...
电脑已经不是人们生活中所陌生的产品,现在人们的娱乐.办公都会用到电脑,而在电脑被越发使用频繁的当下,出现的问题相对来说就越多了.很多时候这些小问题,却使得人们在使用电脑的过程中碰到大难题.就好比空的文 ...
- shell空文件夹查找
使用git维护代码或者文件时,git默认是不上传空文件夹的,如果是用git托管文件系统,可能就会导致好多空文件夹漏传,可以通过以下shell脚本来查找到当前目录下的所有空文件夹,并在文件夹里创建一个隐 ...
- Unity中用递归删除空文件夹和文件夹下面的子文件,meta文件保留和IO的一些操作总结
/*----------------------------------------------------------------Created by 王银文件名: FilesTools创建时间: ...
- Windows删除空文件夹问题带来的学习与思考
1.问题产生: 前段时间得到一份资源,号称有近500个G的学习资料,花了我好长时间下载下来,顺手拿了个文件查重工具查了下,发现这500个G水分很大,资料重复率很高,于是当然就会查重删除重复文件,这 ...
- 空文件夹、重复文件夹清理,电脑优化、异常修复
哈喽~这里是小宝库. 今天原本想发一个清理空文件夹的小工具来着,然后使用效果不太理想.然后小编找啊找,找到一个好朋友...不是,找到一个非常全面的Windows电脑优化工具. 除了可以快速智能的对电脑 ...
- 删除空文件夹 linux,Linux中find批量删除空文件及空文件夹脚本
Linux中find批量删除空文件及空文件夹脚本 linux下批量删除空文件(大小等于0的文件)的方法 代码如下 复制代码 find . -name "" -type f -siz ...
- Python 技术篇-用os库实现删除本地文件、非空文件夹方法,python判断本地文件、文件夹是否存在方法
os.remove() 就是删除文件的 os.removedirs() 就是删除文件夹的 os.path.exists() 用来判断文件或文件夹是否存在 import ospath = "D ...
- 用beyond compare解决git不能同步项目重新下载项目然后就行对比解决冲突
用beyond compare解决git不能同步项目重新下载项目然后就行对比解决冲突 这几天一直由于之前的的项目实现的功能没有提交,git客户端我用的是smartGit,然后 ...
最新文章
- 为什么“不懂数据结构与算法”的程序员一定走不远?
- 解决 python用 xlsxwrite 向excel 中写入中文字符串变量 报错
- React Native Android启动白屏的一种解决方案上
- mysql修改binlog格式_mysql binlog格式...
- clover写入efi_2014 黑苹果折腾之clover efi全新安装
- 《重构-改善既有代码设计》读书笔记-重构篇
- Django之ORM使用以及模板语言
- 职场中一路走来却拂不去一丝失落——一个女IT的告白
- python非数值型数据_Python机器学习实战:如何处理非数值特征
- pip install mysql-connector 安装出错
- windows下apache并发php,windows环境下apache死机问题的解决一例
- 苹果CMSv10_全站伪静态规则教程_宝塔Linux系统
- springboot之整合mybatis
- 阿里B2B技术架构演进详解 一篇创业者必须收藏的文章
- ubuntu16.04安装配置mysql数据库,分割视频为帧图像
- 视频监控安防平台-GB35114和GB28181的注册信令
- eova1.4版本下拉框没有滚动条
- PLSQL Developer解决科学计数法
- 通过Dockerfile创建docker镜像
- 批量探测主机是否存活
热门文章
- [在今天的历史]他们终于要对我下毒手了
- select下拉框如何触发函数并传递参数
- java限制一个接口的执行时间_Java 并发编程:任务执行器 Executor 接口
- Python使用for循环打印金字塔
- java 创建存储过程_如何在pl/sql中创建及调用JAVA存储过程 | 学步园
- mock介绍及moco框架搭建使用
- python第三方库介绍和安装
- SAP License:SAP ECC6安装系列四:安装过程详解
- SAP License:SAP ECC6安装系列三:关于SAP你也许想知道的一些事
- 接到有用数据的5个做法,让你不再头疼