如何判断Linux机器上的目录是否在Java中安装了外部文件系统?

时间:2018-05-04 09:34:29

标签: java linux filesystems

我有三个独立的Linux服务器,它们在名为/ efs

的目录下挂载并共享同一个文件系统

我有一个使用此文件系统的Java应用程序,并且需要能够验证文件系统是否已正确安装(否则,它只会在本地计算机上而不是共享存储上写入/ efs知道) - 我如何从运行时检测到文件系统已挂载到目录?

很抱歉,如果这是一个重复的问题。我确实试图找到相关信息,但我找不到明确的答案。

2 个答案:

答案 0 :(得分:0)

回答我自己的问题 - 我刚刚想到在已安装的文件系统中创建一个文件,只需检查该文件是否存在,避免任何依赖操作系统的代码。

答案 1 :(得分:0)

我看到了解决这个问题的几种方法:

  1. 如果/ efs中挂载的文件系统与根文件系统不同,则可以使用Files.getFileStore(path).type()对它们进行比较。然后,文件系统/是相同的将是缺少/ efs安装的明确指示。这假设JDK> = 7。
  2. 读取并解析/proc/mounts以查看已挂载的文件系统以及使用哪些选项。这与Java的FileStore API使用的数据源相同,因此您可以直接从JDK源获取解析逻辑。这将独立于Java版本。
  3. 在已安装的文件系统上有一个永远不在根文件系统上的文件,然后可以通过Files.exists(path)new File(path).exists()进行检查。这将独立于Java版本,甚至独立于Linux。