使用 nio2 测试是否存在具有特定后缀的文件
Test if a file with a specific suffix exists using nio2
给定:一个名为 example.xml
的文件
目的:测试文件 example.xml.sha256
是否存在。
在 Java 7+(nio2,所以使用 java.nio.files
)中最 elegant/efficient 的方法是什么?
我有这个,但对我来说有点难看:
Path path = Paths.get("/../example.xml");
if (Files.exists(Paths.get(path.toString() + ".sha256")))) {
...
}
使用 .resolveSibling()
会更简洁一些,例如
path.resolveSibling(path.getFileName() + ".sha256");
这并不比您的解决方案显着好,但它确实有一些优点:
- 代码清楚地记录了两个文件之间的关系 - 它们是兄弟姐妹,共享相同的文件名前缀。
- 它利用了
Path
的功能 - 如果您只是要进行直接字符串连接,您最好根本不使用 Path
。
- 它避免了
Paths.get()
,这是使用 Path
s 的次优方式(因为它采用默认文件系统)。一旦你有了 Path
,你就永远不需要重新调用 Paths.get()
。
给定:一个名为 example.xml
的文件
目的:测试文件 example.xml.sha256
是否存在。
在 Java 7+(nio2,所以使用 java.nio.files
)中最 elegant/efficient 的方法是什么?
我有这个,但对我来说有点难看:
Path path = Paths.get("/../example.xml");
if (Files.exists(Paths.get(path.toString() + ".sha256")))) {
...
}
使用 .resolveSibling()
会更简洁一些,例如
path.resolveSibling(path.getFileName() + ".sha256");
这并不比您的解决方案显着好,但它确实有一些优点:
- 代码清楚地记录了两个文件之间的关系 - 它们是兄弟姐妹,共享相同的文件名前缀。
- 它利用了
Path
的功能 - 如果您只是要进行直接字符串连接,您最好根本不使用Path
。 - 它避免了
Paths.get()
,这是使用Path
s 的次优方式(因为它采用默认文件系统)。一旦你有了Path
,你就永远不需要重新调用Paths.get()
。