Juntando arquivos [RESOLVIDO]

Galera, desenvolvi uma aplicação de Download, onde a mesma quebra um determinado arquivos .rar em 4 partes, baixa essas partes. Após baixar essas partes faço a junção das mesmas, mas esta dando como arquivo corrompido. Alguém teria um exemplo de como juntar arquivos ??? algum tutorial??? …

[]'s
Marcelo Alves

como que vc está juntando?
Qual classe do pacote java.io vc está usando?

vc tem que ler um array de bytes e gravar um array de bytes.

até

Abaixo o código que estou usando para juntar:

try {
			
			File file = new File("D:/msg/parts");
			
			FileOutputStream fileOutStream = new FileOutputStream("D:/msg/new_file.rar");
			
			String[] files = file.list();
			
			for (int i = 0; i < files.length; i++) {
				File filePart = new File("D:/msg/parts/" + files[i]);
				BufferedInputStream bufferPartInput = new BufferedInputStream(new FileInputStream(filePart));
				
				byte[] byteArray = new byte[1024];
				
				int result = bufferPartInput.read(byteArray);
				
				while(result != -1){
					
					fileOutStream.write(byteArray,0,result);
					byteArray = new byte[1024];
					
					result = bufferPartInput.read(byteArray);
				}
			}
			
		} catch (FileNotFoundException e) {

			e.printStackTrace();
		} catch (IOException e) {
			
			e.printStackTrace();
		}

Pode ser ou não, mas vale conferir.

Esse byte array de 1024 não está cheio no final dos arquivos e provavelmente está colocando lixo entre um arquivo e outro.

fiz uma coisinha aqui… manda os arquivos que vc tem aí pra mim testar por favor
até

olha, tenho que ir embora pra casa.
fica aí o que eu fiz… qualquer coisa, me dá um retorno.

FileInputStream fileInStream = null; FileOutputStream fileOutStream = null; try { File file = new File("C:\\dell\\drivers\\R196472"); fileOutStream = new FileOutputStream("C:\\dell\\drivers\\R196472\\new_file.rar"); File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { fileInStream = new FileInputStream(files[i]); int result = 0; byte[] byteArray = new byte[1024]; while ((result = fileInStream.read(byteArray)) != -1) { fileOutStream.write(byteArray, 0, result); byteArray = new byte[1024]; } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fileInStream != null) { try { fileInStream.close(); } catch (IOException e) { } } if (fileOutStream != null) { try { fileOutStream.close(); } catch (IOException ex) { } } }

até

Massa… Funciona beleza o teu código e o meu. Mas engraçado que só da arquivo corrompido com formato .RAR . Fiz o teste com arquivo .EXE e funcionou.

Alguém já teve esse problema?

oie

Como que é o código que vc está usando para particionar esses arquivos e fazer download?
Pode estar havendo algum problema na hora de baixar, porque eu acredito que, se funcionou com .EXE deveria funcionar com .RAR.

Até mais

Oi eliangela, achei o erro. O erro estava na divisão do tamanho do arquivo com a quantidade de partes, porque o valor dava fracionado e não me liguei nisso, e sempre ficava faltando 1bite ou coisa parecida.

Masss Valeu pela ajuda!!!

[]'s
Marcelo Alves

olá Marcelo!

Fico feliz que vc tenha achado o erro…
Faz um favor para nós usuários do GUJ: Clique em Editar no seu primeiro post e coloque a tag [RESOLVIDO] no título do seu post.

Até mais