Java I.O

16 respostas
J

Por Favor gostaria de saber se alguem pode me ajuda.

import java.io.;
import java.net.
;

public class WakeOnLan {

public static final int PORT = 3128;    

public static void main(String[] args) {


 // BufferedReader Mac = new BufferedReader (new FileReader(new  File("Mac.txt")));
   
String macStr = Mac.readLine();
         
    String ipStr =  "255.255.255.255";
    //String macStr =  "00:02:55:5D:78:D1";

nao estou conseguindo passar os paramentros do meu arquivo Mac.txt para a String macStr do meu programa.

Se alguem puder me ajudar agradeço desde já.

16 Respostas

Luiz-SP

tenta algo assim

try {
        BufferedReader in = new BufferedReader(new FileReader("Mac.txt"));
        String str;
        while ((str = in.readLine()) != null) {
            if (str..contains("."))
                String ipStr = str;
            if (str..contains(":"))
                String macStr = str;
        }
        in.close();
    } catch (IOException e) {
    }
J

Não deu certo :

O Cod inteiro - agradeço se alguem me ajudar. Obrigado

import java.io.*;
import java.net.*;

public class WakeOnLan {
    
    public static final int PORT = 3128;    
    
    public static void main(String[] args) {
        
      
   //BufferedReader Mac = new BufferedReader (new FileReader(new File("Mac.txt")));
   //String macStr = Mac.readLine();
     
     	 try {
         BufferedReader in = new BufferedReader(new FileReader("Mac.txt"));
         String str;
         while ((str = in.readLine()) != null) {
             if (str..contains("."))
                 String ipStr = str;
             if (str..contains(":"))
                 String macStr = str;
         }
         in.close();
     } catch (IOException e) {
     }
 

      
        String ipStr =  "255.255.255.255";
        //String macStr =  "00:02:55:5D:78:D1";
        
        try {
            byte[] macBytes = getMacBytes(macStr);
            byte[] bytes = new byte[6 + 16 * macBytes.length];
            for (int i = 0; i < 6; i++) {
                bytes[i] = (byte) 0xff;
            }
            for (int i = 6; i < bytes.length; i += macBytes.length) {
                System.arraycopy(macBytes, 0, bytes, i, macBytes.length);
            }
            
            InetAddress address = InetAddress.getByName(ipStr);
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, PORT);
            DatagramSocket socket = new DatagramSocket();
            socket.send(packet);
            socket.close();
            
            System.out.println("Wake-on-LAN packet sent.");
        }
        catch (Exception e) {
            System.out.println("Failed to send Wake-on-LAN packet: + e");
            System.exit(1);
        }
        
    }
    
    private static byte[] getMacBytes(String macStr) throws IllegalArgumentException {
        byte[] bytes = new byte[6];
        String[] hex = macStr.split("(\:|\-)");
        if (hex.length != 6) {
            throw new IllegalArgumentException("Invalid MAC address.");
        }
        try {
            for (int i = 0; i < 6; i++) {
                bytes[i] = (byte) Integer.parseInt(hex[i], 16);
            }
        }
        catch (NumberFormatException e) {
            throw new IllegalArgumentException("Invalid hex digit in MAC address.");
        }
        return bytes;
    }
    
   
}

EDIT - Sr. Aveia, por favor ponha os tags “[ code ]” em seu código Java. Isso pode ajudar alguém a ver, por exemplo, se você se esqueceu de alguma chave ou parêntese, com mais facilidade.

Luiz-SP

Qual é a mensagem de erro?

J

Pessoal eu quero passar como parametro o que está dentro do Mac.txt
para a String MacStr a String IpStr possui valor estático.

Está aparecendo a mensagem de erro:

not a statement
String macStr = str;
^

‘;’ expected
String macStr = str;
^

Se alguem puder me ajudar. Valeu

T
while ((str = in.readLine()) != null) {
              if (str..contains("."))
                  String ipStr = str;
              if (str..contains(":"))
                  String macStr = str;
          }

Primeira coisa - embora não seja necessário, sempre ponha chaves depois do “if”, “while” e “for”, mesmo que seja só uma linha.
Segunda coisa - porque é que você está declarando “String macStr” depois do if, dessa forma?
Terceira coisa - porque é que você repetiu os “…”?

while ((str = in.readLine()) != null) {
              if (str.contains(".")) {
                  ipStr = str;
              }
              if (str.contains(":")) {
                  macStr = str;
              }
          }
Luiz-SP

thingol:
while ((str = in.readLine()) != null) { if (str..contains(".")) String ipStr = str; if (str..contains(":")) String macStr = str; }

Primeira coisa - embora não seja necessário, sempre ponha chaves depois do “if”, “while” e “for”, mesmo que seja só uma linha.
Segunda coisa - porque é que você está declarando “String macStr” depois do if, dessa forma?
Terceira coisa - porque é que você repetiu os “…”?

while ((str = in.readLine()) != null) {
              if (str.contains(".")) {
                  ipStr = str;
              }
              if (str.contains(":")) {
                  macStr = str;
              }
          }

Putz o thingol tem razão, desculapa aí fiz o negócio correndo nem testei…faz as modificações que ele sugeriu…

J

Pessoal obrigado pela força mais estou perdido:

String macStr;
String str;

BufferedReader str = new BufferedReader(new FileReader("Mac.txt"));
     
    try{
          while ((str = in.readLine()) != null)
          {
                if (str.contains(":")) {
                macStr = str;
           							   }
          }


  in.close();
        }
        
 catch (IOException e) {}

ERRO:

F:\Java\WakeOnLan.java:23: cannot find symbol

symbol  : variable in

location: class WakeOnLan

while ((str = in.readLine()) != null)

^

F:\Java\WakeOnLan.java:25: cannot find symbol

symbol  : method contains(java.lang.String)

location: class java.io.BufferedReader

if (str.contains(":")) {

^

F:\Java\WakeOnLan.java:26: incompatible types

found   : java.io.BufferedReader

required: java.lang.String

macStr = str;

^

F:\Java\WakeOnLan.java:31: cannot find symbol

symbol  : variable in

location: class WakeOnLan

in.close();

^

4 errors
T

javanaveia:
Pessoal obrigado pela força mais estou perdido:

String macStr;
String str;

BufferedReader str = new BufferedReader(new FileReader("Mac.txt"));
     
    try{
          while ((str = in.readLine()) != null)
          {
                if (str.contains(":")) {
                macStr = str;
           							   }
          }


  in.close();
        }
        
 catch (IOException e) {}

ERRO:

F:\Java\WakeOnLan.java:23: cannot find symbol

symbol  : variable in

location: class WakeOnLan

while ((str = in.readLine()) != null)

^

F:\Java\WakeOnLan.java:25: cannot find symbol

symbol  : method contains(java.lang.String)

location: class java.io.BufferedReader

if (str.contains(":")) {

^

F:\Java\WakeOnLan.java:26: incompatible types

found   : java.io.BufferedReader

required: java.lang.String

macStr = str;

^

F:\Java\WakeOnLan.java:31: cannot find symbol

symbol  : variable in

location: class WakeOnLan

in.close();

^

4 errors

</blockquote>

vamos por partes…
o 1o erro indica que a variavel in nao faz parte do escopo em que esta sendo utilizado…
o 2o erro indica que vc, provavelmente, esta usando o java1.4 e o metodo contains eh do java1.5 … troque para indexOf (":") > 0
o 3o erro eh que vc esta tentando atribuir uma BufferedReader para uma String (vc deve ler da bufferedReader e guardar na String)
o 4o erro eh igual ao primeiro

J

Pessoal eu sou iniciante alguem poderia me falar a solução

tentei simplificar mas

erro
cannot find symbol
symbol : variable macStr
byte[] macBytes = getMacBytes(macStr);
^
1 error

try{

BufferedReader Arq = new BufferedReader(new FileReader("Mac.txt"));
     
     
  	     
    String macStr = Arq.readLine(); 
    
        
     Arq.close();     
  
   }
   
    catch (IOException e) {}
try {

byte[] macBytes = getMacBytes(macStr);

byte[] bytes = new byte[6 + 16 * macBytes.length];

for (int i = 0; i < 6; i++) {

bytes[i] = (byte) 0xff;

}

for (int i = 6; i < bytes.length; i += macBytes.length) {

System.arraycopy(macBytes, 0, bytes, i, macBytes.length);

}
thiago.correa

declare a variável macStr fora do try

String macStr;
try{

BufferedReader Arq = new BufferedReader(new FileReader("Mac.txt"));



macStr = Arq.readLine();
J
java:23: macStr is already defined in main(java.lang.String[])

String macStr = Arq.readLine();

^

1 error
Matheus_Tardivo

Leia Aprendendo a manipular arquivos.

J

Obrigado pela dica. Já li mas acontece que não consegui. Esto onde estou.
Obrigado novamente.

thiago.correa

O que está acontecendo? O que você quer? Qual é a sua dúvida?! Coloque o erro por completo!

J

CONSEGUI OBRIGADO A TODOS PELA FORÇA

public static void main(String[] args)throws IOException {

BufferedReader Mac = new BufferedReader (new FileReader(“Mac.txt”));

String macStr = Mac.readLine();

Agora só falta colocar em loop (utilizar as Strings de cada linha do Mac.txt) se alguem souber.
Valeu.

thiago.correa
BufferedReader mac = new BufferedReader (new FileReader("Mac.txt")); 

while((macStr = mac.readLine()) != null) {
    // aqui você pode manipular a linha do teu arquivo
}
Criado 6 de abril de 2006
Ultima resposta 8 de abr. de 2006
Respostas 16
Participantes 6