在 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();
那么你只需要玩几个游戏就可以得到正确的输出路径。
我目前正在研究 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();
那么你只需要玩几个游戏就可以得到正确的输出路径。