我无法理解java.nio.file.Files.isSameFile方法与java.nio.file.Path.equals方法的不同之处。Java NIO - Files.isSameFile与Path.equals的不同之处
请问有人能告诉他们他们有什么不同吗?
我无法理解java.nio.file.Files.isSameFile方法与java.nio.file.Path.equals方法的不同之处。Java NIO - Files.isSameFile与Path.equals的不同之处
请问有人能告诉他们他们有什么不同吗?
他们是非常不同的。
例如:
final Path p1 = Paths.get("/usr/src");
final Path p2 = Paths.get("/usr/../usr/src");
p1.equals(p2); // FALSE
Files.isSameFile(p1, p2); // true
final Path p1 = fs1.getPath("/usr/src");
final Path p2 = fs2.getPath("/usr/src");
p1.equals(p2); // FALSE
甲Path
等于另一个Path
当且仅当:
FileSystem
;这是Files.isSameFile()
很大的不同,其访问文件系统和尝试,看看如果两个Path
的立场给同一个文件系统资源。
好的。所以等于只是一个平等的检查其字符串表示,是否正确? – 2015-03-31 12:14:59
不需要。再次阅读答案。 – fge 2015-03-31 12:16:24
好的。了解。谢谢。 – 2015-03-31 13:27:36
isSameFile是从java.nio.file.Files和Path.equals是从java.nio.file.Path
isSameFile - >测试两个路径定位相同的文件。 ie)检查两个Path对象是否为同一个文件 equals - >测试此路径是否与给定对象相等。
你是对的,这使得我的问题变得无效。我已要求删除该问题。感谢您的回答。 – 2015-03-31 12:22:35
equal() == true
然后isSameFile() == true
isSameFile() == true
,equal()
并不总是true
的isSameFile()
方法首先检查Path
对象是在equal()
方面相等,并且如果是的话,它会自动返回如果没有检查是否存在任何文件,则为true。
如果Path
对象equals()
比较返回假,那么它定位于每一个所述路径是指在文件系统中,并且确定它们是相同的,投掷checked IOException
如果任一文件不存在的文件。
java.nio.file.Files.isSameFile()检查两个文件路径是否指向同一个文件=即两个都是硬链接(这对所有操作系统和文件系统都是可移植的(是的))。此方法也遍历符号链接,然后您可以比较两个符号链接到文件名指向unix文件系统/ Windows NTFS上的同一个inode。
你可以找到(不可编辑)文件复制(这同样大小和内容),确定是否是软/硬链接,然后如果没有 - 你可以保存路径和删除第一,然后创建链接到第二个。您可以节省50%的磁盘空间。
'java.nio.file.Path.isSameFile'不存在。你的意思[java.nio.file.Files.isSameFile(http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#isSameFile(java.nio.file 。路径,%20java.nio.file.Path))? – 2015-03-31 12:12:39
是的。你是对的。哦,这使得这个问题无效。请求删除此问题。 – 2015-03-31 12:17:24
你可以编辑它并修复这个错误 – fge 2015-03-31 12:19:07