Compactar em partes

Boa tarde, crieu um .jar onde eu compacto um arquivo para transferir via ftp, esta funcionando perfeitamente, até o momento que o arquivo mesmo compactado fica grande, maior q 200 mb, pois o tempo de conexão com o servidor de ftp expira. Tem como compactar em partes, como o winrar faz usando java? Procurei no google mas não encontrei nada.

vlw

Cara, se eu nao estou enganado acho que a sacada ai não é compactar em partes.
Mas sim enviar em partes para o ftp…
Acho que assim você pode ter mais sucesso…
posso estar falando besteira, mas acho que assim dá.

[]'s

[quote=felipehand]Cara, se eu nao estou enganado acho que a sacada ai não é compactar em partes.
Mas sim enviar em partes para o ftp…
Acho que assim você pode ter mais sucesso…
posso estar falando besteira, mas acho que assim dá.

[]'s[/quote]

como fazer para enviar em partes para o ftp?

hj estou usando assim:

public static boolean transfereArqFTP(String servidor, String usuario, String senha, List<File> listaArquivos, String diretorio) { String nomeArquivo = null; FTPClient ftp = new FTPClient(); try { ftp.connect(servidor); // verifica se conectou com sucesso! if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) { if (!ftp.login(usuario, senha)) { ftp.disconnect(); System.out.println("Login recusado"); return false; } } else { // erro ao se conectar ftp.disconnect(); System.out.println("Conexao recusada"); return false; } String dir = ""; for (int i = 0; i < diretorio.length(); i++) { if (!diretorio.substring(i, i + 1).equals("\")) { dir += diretorio.substring(i, i + 1); } else { if (!ftp.changeWorkingDirectory(dir.trim())) { ftp.disconnect(); System.out.println("Diretorio de envio informado inexistente"); return false; } else { dir = ""; } } } if (!ftp.changeWorkingDirectory(dir.trim())) { ftp.disconnect(); System.out.println("Diretorio de envio informado inexistente"); return false; } // para cada arquivo informado... for (Iterator<File> iter = listaArquivos.iterator(); iter.hasNext();) { File arquivo = iter.next(); // abre um stream com o arquivo a ser enviado InputStream is = new FileInputStream(arquivo); // pega apenas o nome do arquivo int idx = arquivo.getName().lastIndexOf(File.separator); if (idx < 0){ idx = 0; } else { idx++; } nomeArquivo = arquivo.getName(); // ajusta o tipo do arquivo a ser enviado if (arquivo.getName().endsWith(".txt")) { ftp.setFileType(FTPClient.ASCII_FILE_TYPE); } else if (arquivo.getName().endsWith(".jpg")) { ftp.setFileType(FTPClient.BINARY_FILE_TYPE); } else { ftp.setFileType(FTPClient.ASCII_FILE_TYPE); } System.out.println("Enviando arquivo " + nomeArquivo + "..."); // faz o envio do arquivo if (!ftp.storeFile(nomeArquivo, is)) { ftp.disconnect(); System.out.println("Nao foi possivel enviar o arquivo " + nomeArquivo + "..."); return false; } else { System.out.println("Arquivo " + nomeArquivo + " enviado com sucesso!"); } } ftp.disconnect(); return true; } catch (Exception e) { e.printStackTrace(); return false; } catch (Throwable e) { e.printStackTrace(); return false; } }

Maninho,
Camarada fez isso uma vez em C#, vo ver com ele como ele fez e post aqui. Mas lembro nitidamente o que ele falou isso pra mim…
Se você setar o tamanho do buffer, ele obrigatoriamente nao “divide” o arquivos em partes e manda?