Mover arquivos de um pc para outro

12 respostas
carol_programadora

Oi a todos.

eu to precisando executar algo que nunca fiz, a aplicação deve pegar arquivos de uma máquina e transferir pra outra. Os arquivos são txt, jpg, doc, xml. Alguns são bem grandes.

A máquina onde roda o programa é servidor web, e a pasta onde fica o destino é num servidor de arquivos em outra máquina.

Pesquisei aqui e outros lugares, e vi que recomendações por FTP, tentei fazer, mas deu erro.

Por exemplo, o caminho que preciso enviar os arquivos é este: \serpjto012\finan$\dept04\arquivos

Se eu digitar este caminho numa url, ele me leva até a essa pasta no servidor, mas quando tentei por FTP, ele dá erro.

Isto é uma pasta num servidor de arquivo, no caso pra funcionar ele deveria ser habilitado como servidor FTP, ou não precisa? não entendo muito sobre isso…

Obrigada a todos.

12 Respostas

luistiagos

o cliente que vai rodar esta app tem acesso a rede de onde esta o arquivo origem e destino?
caso tenha é bem simples é só vc via uma app local (que roda no pc do cliente) acessar a rede onde esta o arquivo de origem copia-lo e depois acessar onde esta o seu destino e “colar” ele la…
caso não tenha acesso a rede vc tera que fazer a app fazer download do mesmo na maquina do cliente e depois upload para o server de destino… isto se vc não quiser usar ftp… dependendo da situação…

maior_abandonado

talvez te seja util:

http://www.guj.com.br/posts/list/112257.java

carol_programadora

luistiagos:
o cliente que vai rodar esta app tem acesso a rede de onde esta o arquivo origem e destino?
caso tenha é bem simples é só vc via uma app local (que roda no pc do cliente) acessar a rede onde esta o arquivo de origem copia-lo e depois acessar onde esta o seu destino e “colar” ele la…
caso não tenha acesso a rede vc tera que fazer a app fazer download do mesmo na maquina do cliente e depois upload para o server de destino…

oi luistiagos, sim o arquivo vai estar junto da aplicação no servidor 1 digamos assim, ela tem acesso normal ao arquivo, já está com ele, não precisará fazer dowload. No caso é pegar este arquivo e mandar ele pra uma pasta no servidor 2, que minha aplicação tem acesso ao diretório.

A dúvida era, se o servidor 2, que é um servidor de arquivos, precisa ser configurado pra receber FTP, porque fiz uma classe usando FTP do java, e o arquivo não foi enviado.

luistiagos

então neste caso acredito que vc nem precise de ftp… ja que o usuario tem acesso a ambas a pasta e so fazer a app fazer um “copy-past”

saviobarr

Oi Carol,
Você pode usar o POI, java.io.FileOutputStream, FileInputStream e java.io.File.
Leia com POI, em seguida escreva o conteúdo do arquivo lido num FileOutPutStream, apontando para a máquina de destino.
Pode parecer complicado, mas acredite, é simples. Se quiser te mando exemplos por e-mail/msn

[]´s

Sávio

luistiagos

aqui: http://www.java2s.com/Code/Java/File-Input-Output/Input-Output-Stream.htm
tem bastentes exemplos para te ajudar…
mas lembre-se para poder “copiar-colar” de uma pasta para a outra ambas tenque ter permição a leitura (a da qual vc ira copiar o arquivo) e de escrita (a qual vc ira “colar” o arquivo…)

carol_programadora

saviobarr:
Oi Carol,
Você pode usar o POI, java.io.FileOutputStream, FileInputStream e java.io.File.
Leia com POI, em seguida escreva o conteúdo do arquivo lido num FileOutPutStream, apontando para a máquina de destino.
Pode parecer complicado, mas acredite, é simples. Se quiser te mando exemplos por e-mail/msn

[]´s

Sávio

entendi, mas este procedimento é bom no caso de arquivos grandes? não demoraria muito pela rede ? tem alguns arquivos bem grandes a serem enviados.

maior_abandonado

carol_programadora:

entendi, mas este procedimento é bom no caso de arquivos grandes? não demoraria muito pela rede ? tem alguns arquivos bem grandes a serem enviados.

certa vez uma outra pessoa daqui do forum me deu um exemplo com nio, que é mais rapido… faz tempo mais me parece que te seria bem util…

carlos.uneb

Na verdade, se você tem acesso a rede então faz via comando copy do msdos…

seria assim:

public static void main(String[] args) throws IOException {
        //buffer para pegar a saida.
        byte[] b = new byte[1024];
        // executa o comando no msdos 
        Process p = Runtime.getRuntime().exec("cmd /c copy arquivo_origem arquivo_destino");
        // le a saida do commando
        p.getInputStream().read(b);
        // imprime na tela a saida do comando.
        System.out.write(b);
    }

o comando cmd /c é necessário ele é que executa o que for passado depois dele.

Testa ae e me fala. :wink:

carlos.uneb

carlos.uneb:
Na verdade, se você tem acesso a rede então faz via comando copy do msdos…

seria assim:

public static void main(String[] args) throws IOException {
        //buffer para pegar a saida.
        byte[] b = new byte[1024];
        // executa o comando no msdos 
        Process p = Runtime.getRuntime().exec("cmd /c copy arquivo_origem arquivo_destino");
        // le a saida do commando
        p.getInputStream().read(b);
        // imprime na tela a saida do comando.
        System.out.write(b);
    }

o comando cmd /c é necessário ele é que executa o que for passado depois dele.

Testa ae e me fala. :wink:

Eae testou?

luistiagos

carlos.uneb:
carlos.uneb:
Na verdade, se você tem acesso a rede então faz via comando copy do msdos…

seria assim:

public static void main(String[] args) throws IOException {
        //buffer para pegar a saida.
        byte[] b = new byte[1024];
        // executa o comando no msdos 
        Process p = Runtime.getRuntime().exec("cmd /c copy arquivo_origem arquivo_destino");
        // le a saida do commando
        p.getInputStream().read(b);
        // imprime na tela a saida do comando.
        System.out.write(b);
    }

o comando cmd /c é necessário ele é que executa o que for passado depois dele.

Testa ae e me fala. :wink:

Eae testou?

O problema é que isto só funcionara no windows…

carlos.uneb

Concordo,

Mas o que se quer é resolver o problema, já para se ter portabilidade, você deve fazer IO via NIO aqui no guj tem um tutorial sobre como copiar arquivos usando NIO.

att. Carlos

Criado 10 de dezembro de 2008
Ultima resposta 12 de dez. de 2008
Respostas 12
Participantes 5