Ajuda aki plz código complicado

3 respostas
S

Bom dia

Sou novo aki no fórum porque estou com alguns problemas
Antes vou explicar o código o q pretendo fazer nele, bom eu estou criando um loader em java para um servidor de um jogo, e eu queria saber como alterar o arquivo "host" do windows, apenas acrescentando linha com o ip do servidor caso o arquivo não tenha ou alterar o endereço ip do servidor, porque o servidor pode ter troca de ip após ter um restart.

agora o q eu não consegui: (obs.: arquivo se chama Loader.java)
1) adicionar a linha caso não seja encontrada
2) código q eu fiz para alterar linha apresenta 2 erros q são os seguintes:

C:\programacao\Loader.java:101: cannot find symbol
symbol : variable fc
location: class Loader
BufferedReader ler = new BufferedReader (new FileReader(fc.getSelectedFile("C:/WINDOWS/system32/drivers/etc/hosts")));

C:\programacao\Loader.java:114: cannot find symbol
symbol : variable loader
location: class Loader
oos.writeObject(loader);

2 errors

public static void main (String args[])
	{
		Loader Load = new Loader();
		Load.pack();
		Load.setVisible(true);

		//AREA DE TESTE
		String ping = "ping http://jogo.org";// Declarando o comando
		Process p = Runtime.getRuntime().exec(ping); //Ele executará o comando ping.
		InputStream in = p.getInputStream();//Armazenando o valor do ping
		int c;
		while ((c = in.read()) != -1)
		{
			//teste para ler o arquivo hosts
			try
			{
				//criando um buffer pra poder ler cada linha do arquivo hosts
				BufferedReader ler = new BufferedReader (new FileReader(fc.getSelectedFile("C:/WINDOWS/system32/drivers/etc/hosts")));
				String linha="jogoauthd.jogo.com";
				String le;
				while ((le=ler.readLine()) != null)
				{
					//aki raciocinio pra alterar a linha caso for diferente ou nao mudar caso for igual
					if(le == linha)
					{
						//PrintWriter saida = new PrintWriter ("C:\WINDOWS\system32\drivers\etc\hosts");
						try
						{
							FileOutputStream fos = new FileOutputStream("C:/WINDOWS/system32/drivers/etc/hosts");
							ObjectOutputStream oos = new ObjectOutputStream(fos);
							oos.writeObject(Loader);
							oos.flush();
						}
						catch(Exception e)
						{
							e.printStackTrace(System.err);
						}

					}
				}
				ler.close();
			}
			catch (Exception e)
			{
				e.printStackTrace(System.err);
			}
		}
		in.close();
        //FIM DA AREA DE TESTE*/

	}

resultado q tem q ficar no arquivo "hosts" do windows é o seguinte: (lembrando q é somente para acrescentar ou alterar a linha)

127.0.0.1 localhost
75.125.177.50 jogoauthd.jogo.com

bom já digo q não sou expert em java, mas pesquisei e estudei muito pra chegar nisso, alguns trechos desse código eu peguei idéia de outros lugares q encontrei, esse é o meu maior desafio antes do meu próximo projeto, então queria pedir ajdua de vcs para entender melhor e achar uma forma de resolver esse problema.

se não fui claro posso tentar explicar de outra maneira. :)

obrigado pela sua atenção.

ps.: se esste topico não estiver deacordo com a regras podem deleta-lo :wink:

3 Respostas

J

Não seria isso?

BufferedReader ler = new BufferedReader (new FileReader("C:/WINDOWS/system32/drivers/etc/hosts"));

Tem algumas coisas que não dá pra saber sem o resto da classe, você colocou só o metodo main().

S

vlw pela dica aí

pois então, isso é tudo q eu conseguir fazer, o resto é só classe pra criar botões, o q eu preciso fazer é nessa parte, isso se for possível claro

BrunoBastosPJ

Você está lendo um arquivo e tentando escrever nele ao mesmo tempo… Isso pode dar algum erro o ideal e gravar em um arquivo aux e depois substituir o anterior.

Você está comparando Strings com == e o certo é usar o método equals

Não da para identificar onde a variável fc esta declarada e instânciada

O segundo erro que você colou parece já estar corrigido no código. Eu recomendo que você escreva nomes de variáveis começando com minúsculas :wink:

Abs

Criado 27 de fevereiro de 2008
Ultima resposta 27 de fev. de 2008
Respostas 3
Participantes 3