Enviar arquivo pela internet com Java

Pessoal, gostaria de perguntar se é possível com o Java enviar um arquivo de um pc para outro fora da rede local, Ou fazer upload em algum servidor temporário e buscar o dado por outro pc.
Grato pela atenção!

Sim, é possível…

Com a programação tudo é possível. Continue buscando que vai encontrar uma forma. Não e muito complicado…

Pow galera, desculpem-me, mas por favor, vamos ser mais gentis.

Então @Eduardo_Almeida, tem muitas formas de fazer isso, uma seria via socket, via REST ou SOAP (array de bytes), via FTP, via upload em uma página conforme disse… etc…

Precisa definir primeiro o seu ambiente.
Depois procure por “Java send file REST/SOAP/SOCKET/FTP…ETC…”

Qualquer coisa poste aqui.

1 curtida

Olá @Eduardo_Almeida é sim possível, você pode obter isso com algo chamado Sockets TCP e algumas classes de IO como FileInputStream(para ler o arquivo do computador), FileOutputStream (para escrever o arquivo no computador), DataInputStream (para receber os bytes do “dos” para o cliente) e DataOutputStream (para enviar os bytes do “fis”).

Aqui está um pequeno exemplo de cliente que envia para o servidor:

public static void main(String[] args) {
    Socket s = new Socket("hostname-do-server", 25567); //Voce pode mudar a porta a vontade, mas observe se a mesma ja nao esta sendo utilizada por outro processo!
    
    FileInputStream fis = new FileInputStream(new File("arquivo.txt");
    DataOutputStream dos = new DataOutputStream(s.getOutputStream());

    //Esse é o metodo mais recomendado para copiar uma stream em java, utilize sempre que possivel!
    byte[] buffer = new byte[1024];
    int count;
    while((count = fis.read(buffer)) > 0) {
         dos.write(buffer, 0, count);
         dos.flush(); //Isso é muito importante para nao dar BufferOverflow no cliente!
    }

    fis.close();
    dos.close();
    s.close();
}
2 curtidas

@RenanRosa Me parece que tem varias possibilidades, dei uma lida em alguns tópicos relacionados a sua sugestão, tem bastante coisa ! Gostaria de agradecer pela resposta ^^
É que eu automatizei um trabalho que faço e gostaria de receber o ‘‘relatório’’ regularmente mas sem precisar ficar indo na estação, atualmente ele escreve esse ‘‘relatório’’ em um txt, eu só gostaria de recebe-lo pelo meu notebook.

@Mint Muuito obrigado, agora sei por onde começar minha pesquisa ! na realidade não é tanta coisa quanto imaginei que seria kkkk
Eu só tenho uma duvida em relação ao código, eu fiz a pergunta no intuito de receber uns relatórios automaticamente pelo meu notebook, se eu alterar o Nome/Descrição do notebook ( la nas configurações remotas ) serve como hostname para colocar no argumento do socket ?

Se você estiver em rede local basta abrir as portas do roteador e nofirewall dos dois computadores e utilizar seus IPs internos da rede.