Mover arquivos de um pc para outro

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.

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…

talvez te seja util:

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

[quote=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…[/quote]

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.

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”

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

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

[quote=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[/quote]

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

[quote=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.[/quote]

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…

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:

[quote=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:[/quote]

Eae testou?

[quote=carlos.uneb][quote=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:[/quote]

Eae testou?[/quote]

O problema é que isto só funcionara no windows…

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