Alguém sabe me dizer como ler o conteúdo de um arquivo .rar?
nas minhas pesquisas eu descobri que posso usar a classe ZipFile para ler arquivos .zip, mas no caso de arquivos .rar, como eu faço para ler os arquivos armazenados nele.
Por exemplo:
Eu tenho o diretório imagens.rar e dentro desse diretório eu tenho várias imagens.
Será que não existe alguma maneira para se fazer algo como:
//Obter todos os arquivos inlcusos no arquivo (diretório .rar)for(Filefile:arquivoRar.getFiles()){//}
??
drsmachado
Camarada levimendes, .rar é um arquivo, como tal, possui determinadas regras para leitura.
A coisa legal no java é que, se não existe, você pode criar.
Mãos à obra.
A
aganhara
Bom, eu nunca usei e não sei se é exatamente que você precisa, da uma olhada nessa lib ai http://code.google.com/p/raroscope/?, pode ser que resolva seu problema.
Se funcionar certinho da um feedback ai.
Abraço
levimendes
É exatamente isso que eu estava querendo (Só que no fim acabei lendo apenas arquivos .zip):
privateclassSalvaImagemAsyncTascextendsAsyncTask<Void,String,Void>{privateProgressDialogprogressDialog;@OverrideprotectedVoiddoInBackground(Void...params){StringpathImagens="mnt/sdcard/img_to_be_saved.zip";Filefile=newFile(pathImagens);ZipFilezipFile=null;try{zipFile=newZipFile(file);}catch(ZipExceptione1){Log.e("SalvaImagemAsyncTasc",e1.getMessage());}catch(IOExceptione1){Log.e("SalvaImagemAsyncTasc",e1.getMessage());}if(zipFile!=null){Enumerationenumeration=zipFile.entries();intqtdImagens=zipFile.size();intqtdImagensInseridas=0;while(enumeration.hasMoreElements()){ZipEntryentry=(ZipEntry)enumeration.nextElement();InputStreaminputStream=null;try{inputStream=zipFile.getInputStream(entry);bytebytesImagem[]=toBytes(inputStream);Imagemimagem=newImagem();imagem.setNomeImagem(entry.getName());imagem.setImgagem(bytesImagem);StringmsgAndamento=newString("Inserindo imagem: "+entry.getName());msgAndamento+="\n"+++qtdImagensInseridas+" de "+qtdImagens;Log.e("SavingImageOnDatabaseActivity",""+qtdImagensInseridas);publishProgress(msgAndamento);bancoDeDadosTeste.inserirImagem(imagem);}catch(FileNotFoundExceptione){Log.e("SavingImageOnDatabaseActivity",e.getMessage());}catch(IOExceptione){Log.e("SalvaImagemAsyncTasc",e.getMessage());}}}returnnull;}@OverrideprotectedvoidonProgressUpdate(String...values){progressDialog.setMessage(values[0]);}@OverrideprotectedvoidonPostExecute(Voidresult){super.onPostExecute(result);if(progressDialog!=null&&progressDialog.isShowing()){progressDialog.dismiss();}}@OverrideprotectedvoidonPreExecute(){super.onPreExecute();progressDialog=ProgressDialog.show(SavingImageOnDatabaseActivity.this,"Aplicativo de testes","Inserindo imagens...");}}