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