Android: определение символической ссылки

Я просматриваю все каталоги, начиная с "/", чтобы найти некоторые конкретные каталоги, такие как "MYFOLDER". Однако папка состоит в том, что я получаю двойные экземпляры одной и той же папки. Это происходит потому, что одна папка находится в "/mnt/sdcard/MYFOLDER", и одна и та же папка имеет символическую ссылку в "/sdcard/MYFOLDER".

Мой вопрос: "Есть ли способ определить, является ли папка символической ссылкой или нет?". Пожалуйста, дайте мне несколько советов.

Ответ 1

Это в основном то, как они делают в Apache Commons (при условии их лицензия):

public static boolean isSymlink(File file) throws IOException {
  File canon;
  if (file.getParent() == null) {
    canon = file;
  } else {
    File canonDir = file.getParentFile().getCanonicalFile();
    canon = new File(canonDir, file.getName());
  }
  return !canon.getCanonicalFile().equals(canon.getAbsoluteFile());
}

Изменить благодаря комментарию @LarsH. Вышеприведенный код проверяет, является ли файл children символической ссылкой.

Чтобы ответить на вопрос OP, это еще проще:

public static boolean containsSymlink(File file) {
  return file.getCanonicalFile().equals(file.getAbsoluteFile());
}