在 java 中搜索文件路径

Grepping file paths in java

我目前正在研究 Gitlet,这是一个仿照 Git 的版本控制系统。目前,我的提交存储在文件夹中,每个文件夹都以其提交 ID 作为文件夹名称。如果每个文件没有被更改,则需要 "inherited" 到下一次提交,但我无法将上一次提交的内容复制到新提交中以保存 space。我通过将文件(键)及其路径(值)存储在 HashMap 中来实现这种继承。每个提交都有自己的 HashMap 和自己的继承文件。当用户添加文件时,截至目前,我才发现我只考虑了这些用户实际上在找到文件的目录中的情况。我没有考虑用户是否不在文件所在的目录中。这带来了一个大问题,因为复制到哈希映射的路径是 <folder/folder2/file.txt = commits/3/folder/folder2/file.txt>,而我实际上只想 <file.txt = commits/3/file.txt>

有没有一种 "easy" 方法可以让我 grep 这个,这样唯一被复制的是实际文件名而不是 folder/folder2?

我目前正在复制这样的文件:

          try {
                String path = "./.gitlet/commits/" + commitID;
                for (String file : stagedQueue) {

                        File temp = new File(path + file);
                        Files.copy((new File(file).toPath()), 
                            (new File(path + "/" + file).toPath()));

                }


            } catch (IOException e) { //closes try and starts catch
                e.printStackTrace();
            } //closes catch

其中 stagedQueue 是一个 HashSet<String> 包含用户添加的文件,将包含在下一次提交中

我不是 100% 是你要找的,但如果你只想要文件名,那就是:

File().getName();
File().getPath();

那么你只需要玩几个游戏就可以得到正确的输出路径。