Pergunta

Como posso obter a localização do arquivo hosts Ao usar meu aplicativo em diferentes plataformas?

Foi útil?

Solução

Pense que você teria que rolar o seu próprio aqui, tenho medo, pois essa é uma função de sistema de nível bastante baixo, acho que está um pouco além do que você poderia esperar que Java faça por você.

Esse link aponta para algumas opções especiais que você pode definir para alterar a ordem de ligação, não acho que eles lhe dirão onde está o arquivo hosts, mas você poderia investigar dentro e ao redor dessas opções para ver se você pode encontrar mais alguma coisa para ajudar você

Outras dicas

Você pode usar a propriedade do sistema "OS.Name" para determinar o sistema operacional. Em seguida, recupere o arquivo hosts, dependendo de onde cada sistema operacional o armazena. Por exemplo:

String osName = System.getProperty("os.name").toLowerCase();
File hostsFile;
if (osName.startsWith("mac os x")){
  hostFile = new File("/etc/hosts");
} else if (osName.contains("windows")){
  hostFile = //...
}

Dê uma olhada nos locais dos arquivos hosts para cada sistema operacional e versão em Wikipedia. Infelizmente, você terá que implementar sua própria lógica semelhante à resposta de Michael:

import java.awt.Desktop;
import java.io.File;

public class HostsFile
{
    public static void main(String[] args) throws Exception
    {
        String osName = System.getProperty("os.name");

        File hostsFile = null;

        if (osName.contains("Windows"))
        {
            hostsFile = new File(System.getenv("WinDir")
                    + "\\system32\\drivers\\etc\\hosts");
        }

        Desktop.getDesktop().open(hostsFile);
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top