Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java在不同的机器(WIndows、linux等)上访问hostfile_Java - Fatal编程技术网

如何使用Java在不同的机器(WIndows、linux等)上访问hostfile

如何使用Java在不同的机器(WIndows、linux等)上访问hostfile,java,Java,嗨,我正在尝试解析保存在不同机器上不同位置的主机文件。Plz帮助我访问主机文件,假设我可以拥有所有类型的机器(Windows、linux、mac等)。我想要一个完整的java方法来解析主机文件,而不考虑底层系统 到目前为止,我一直在对windows中hostfile的位置进行硬编码: private final String mHostFileLocation = "C:\\WINDOWS\\system32\\drivers\\etc\\hosts";

嗨,我正在尝试解析保存在不同机器上不同位置的主机文件。Plz帮助我访问主机文件,假设我可以拥有所有类型的机器(Windows、linux、mac等)。我想要一个完整的java方法来解析主机文件,而不考虑底层系统

到目前为止,我一直在对windows中hostfile的位置进行硬编码:

private final String mHostFileLocation =
                    "C:\\WINDOWS\\system32\\drivers\\etc\\hosts";

但我认为这是个坏主意。请让我知道如何在任何系统上解析主机文件。

恐怕没有一种标准的平台无关的方法可以做到这一点。您只需拥有所有有效位置的列表:

String [] hostsLocations = {"C:\\WINDOWS\\system32\\drivers\\etc\\hosts", "/etc/hosts"};

然后尝试每种方法,直到找到一个存在的文件,或者从系统属性中进行一点操作系统嗅探,以确定您的操作系统在哪个操作系统上并使用正确的位置。请注意,对于它,实际上没有太多不同的位置。

没有统一的方法来定位主机文件。如果计算机被设置为仅运行DNS,则可能没有DNS


也就是说,在Mac上文件位于/private/etc/hosts中,在Linux上通常位于/etc/hosts中。

为什么要这样做?您试图解决的问题是什么?如果您正在寻找一个好的解决方案,请使用DNS,并且主机文件中没有任何内容。如果这不是一个选项,你必须接受这不是理想的。在mac上/etc与/private/etc是符号链接的,所以/etc/hosts和/private/etc/hosts基本上是一样的