如何知道文件名是否是Android中的别名?

如何知道文件名是否是Android中的别名?,android,symlink,Android,Symlink,我正试图找出一种在Android设备中查找可移动SD卡的方法。我已经找到了几种方法,可以提供始终如一的好结果。有时我会发现两个不同的文件路径似乎指向完全相同的位置 例如: /mnt/sdcard 及 /storage/sdcard0 在某些设备上显示为指向同一位置。我的结论是其中一个是别名,但两者都可以用于向SD卡写入数据。我对别名的使用不太熟悉,但是有没有办法确定这两个文件中是否有一个是别名?是否可以确定“真实”文件路径? 我知道Android是基于Linux内核构建的,并且采用了一些文件系统

我正试图找出一种在Android设备中查找可移动SD卡的方法。我已经找到了几种方法,可以提供始终如一的好结果。有时我会发现两个不同的文件路径似乎指向完全相同的位置

例如:

/mnt/sdcard
/storage/sdcard0

在某些设备上显示为指向同一位置。我的结论是其中一个是别名,但两者都可以用于向SD卡写入数据。我对别名的使用不太熟悉,但是有没有办法确定这两个文件中是否有一个是别名?是否可以确定“真实”文件路径?


我知道Android是基于Linux内核构建的,并且采用了一些文件系统约定。有没有一种标准的Linux方式可以做到这一点?

我想你指的是symlink

这基本上是他们在以下情况下所做的:

在本答复中还提到:


嗯,当你在这里引用另一个答案并链接到它的来源时,这不是我先生答案的副本吗?不,这是问题的实际答案。然而,这个答案是对类似这样重复问题的许多其他好答案的重复。这个问题可能不会被标记为重复(我标记了它)人们仍然可以看到正确的答案。这叫做符号链接,你可以在这里找到答案:我想你的意思是它是一个symlink@timmied:它也可能是硬链接。我知道它是一个符号链接,上午没有这方面的资源。在XDADevs上的某个地方阅读它,但是我们能用类似的脚本轻松地检测到它是什么吗?
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());
}