git 和 java 不区分文件名的大小写

今天遇到一个特别奇怪的事情,往 github 提交代码的时候,显示已经提交成功,没有修改,但是当别人拉取代码后,项目编译不过去。原因是:UI 给的图片命名一开始是有中划线和大写的,当时直接添加到 github 里面去了。但是本地项目编译不过去,所以本地用脚本和手动修改方式,将大批的文件都修改好了。本以为提交上去了,但是没想到 git 忽略了本地的文件名的大小写,虽然本地修改成功了,但是 git 识别不了。

因为工作关系是两台电脑,所以在另外一台电脑也遇到了相同的事情,于是打算用java程序处理。 但是在调试的过程中,发现 file.exist() ,也不区分大小写。

git 的解决办法是:

git config core.ignorecase false

让 git 支持 大小写的识别。

java 的办法是:

不使用 file.exist() 判断,直接 file.rename()。

java 参考代码:

/**
 * FileNameTest
 * Created by WangQing on 2018/1/23.
 */
public class FileNameTest {

    private static final String TAG = "FileNameTest";

    @Test
    public void test_cast() {
//        String path = "/Users/WangQing/Android_Pro/KaiDunPro/app/src/main/res";
        String path = "/Users/WangQing/Desktop/pic";
        dirList(path);
    }

    private void dirList(String path) {
        List<File> list = FileUtils.listFilesInDir(path, true);

        for (File f : list) {

            if (f.isDirectory()) {
                dirList(f.getPath());
                continue;
            }

            String fileName = FileUtils.getFileName(f);

            if (!fileName.toLowerCase().equals(fileName) || fileName.contains("-")) {
                String oldFileName = fileName;

                if (fileName.contains("-")) {
                    fileName = fileName.replaceAll("-", "_");
                }

                String newFileName = fileName.toLowerCase();

                File file = new File(f.getParent() + "/" + newFileName);

                boolean b = f.renameTo(file);

                System.out.println("test_cast: 原来的文件名是:" + oldFileName + ", 新文件名是:" + newFileName + ", rename state:" + b);
            }
        }
    }
}

依赖:

compile 'com.github.ZhuoKeTeam:zhuoke-sdk:1.0.0'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你做的事对上司是不是有用的?而不是应付表面工作。你做的研究是不是对医学进步有用的?是不是站在了导师的角度对他有用?...
    三月楚楚阅读 603评论 0 50
  • 今天是我来北京城的第三天,一个背包,一个手机,还有支付宝里的钱,一个人走在北京的大街上,这并不是那场所谓的说走就走...
    我渴了阅读 423评论 2 2
  • 别让孩子输在起跑线上!这句话,在中国喊了十几年,几十年,但一直都没喊清楚过。 赞同者说,好的学校就是起跑线,所以要...
    韩同志阅读 163评论 0 0