Android: определение символической ссылки - PullRequest
8 голосов
/ 02 сентября 2011

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

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

1 Ответ

14 голосов
/ 02 сентября 2011

По сути, это то же самое, что и в 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());
}

Редактировать благодаря @Резкий комментарий.Приведенный выше код проверяет, является ли дочерний файл символической ссылкой.

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

public static boolean containsSymlink(File file) {
  return !file.getCanonicalFile().equals(file.getAbsoluteFile());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...