Mover arquivos de um pc para outro

12 respostas
C

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

L

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…

M

talvez te seja util:

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

C

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.

L

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”

S

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

L

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…)

C

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.

M

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…

C

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:

C

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?

L

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…

C

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