Они равны друг другу:

new File("c:\\a")
new File("c:\\a\\")
new File("c:\\a","")
new File("c:\\a\\","")

Но new File("c:\\a","\\") им не равны

Но new File("c:\\a","\\b") равно new File("c:\\a","b")

Зачем?

0
Shi Lei 26 Авг 2011 в 12:58

3 ответа

Лучший ответ

equals() - Лексикографически сравнивает два абстрактных пути.

Следующие отпечатки ясно показывают, что это не тот же путь.

System.out.println(new File("c:\\a").getAbsolutePath());
System.out.println(new File("c:\\a\\").getAbsolutePath());
System.out.println(new File("c:\\a","").getAbsolutePath());
System.out.println(new File("c:\\a\\","").getAbsolutePath());
System.out.println(new File("c:\\a","\\").getAbsolutePath());
System.out.println(new File("c:\\a","\\b").getAbsolutePath());
System.out.println(new File("c:\\a","b").getAbsolutePath());

Выход

c:\a
c:\a
c:\a
c:\a
c:\a\
c:\a\b
c:\a\b
1
oliholz 26 Авг 2011 в 09:09

JavaDocs для java.io.File должен проясните это.

File(File parent, String child)
          Creates a new File instance from a parent abstract pathname and a child pathname string.
File(String pathname)
          Creates a new File instance by converting the given pathname string into an abstract pathname.
2
adarshr 26 Авг 2011 в 09:05

Я ничего не знаю о Java, но не потому ли, что «c: \ a» - это файл, а «\» - это каталог?

0
Kristian Frost 26 Авг 2011 в 09:03