Ler conteúdo de diretório .rar

Olá pessoal,

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.

Grato, Levi.

Cara tem este tópico aqui, espero que te ajude.

http://www.guj.com.br/java/217366-resolvido—extrair-arquivos-rar

Será que não existe alguma maneira para se fazer algo como:

//Obter todos os arquivos inlcusos no arquivo (diretório .rar)
for (File file : arquivoRar.getFiles()) {
     //
}

??

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.

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

É exatamente isso que eu estava querendo (Só que no fim acabei lendo apenas arquivos .zip):


    private class SalvaImagemAsyncTasc extends AsyncTask<Void, String, Void> {
    	
    	private ProgressDialog progressDialog;

		@Override
		protected Void doInBackground(Void... params) {
			String pathImagens = "mnt/sdcard/img_to_be_saved.zip";
			File file = new File(pathImagens);
						
			ZipFile zipFile = null;
			
			try {
				zipFile = new ZipFile(file);
				
			} catch (ZipException e1) {
				Log.e("SalvaImagemAsyncTasc", e1.getMessage());
				
			} catch (IOException e1) {
				Log.e("SalvaImagemAsyncTasc", e1.getMessage());
				
			}
			
			if (zipFile != null) {
				
				Enumeration enumeration = zipFile.entries();
				
				int qtdImagens = zipFile.size();
				int qtdImagensInseridas = 0;
				
				while (enumeration.hasMoreElements()) {
					
					ZipEntry entry = (ZipEntry) enumeration.nextElement();
									
					InputStream inputStream = null;
					
					try {
						
						inputStream = zipFile.getInputStream(entry);
						
						byte bytesImagem[] = toBytes(inputStream);
						Imagem imagem = new Imagem();
						
						imagem.setNomeImagem(entry.getName());
						imagem.setImgagem(bytesImagem);
						
						String msgAndamento = new String("Inserindo imagem: " + entry.getName());
						msgAndamento += "\n" + ++qtdImagensInseridas + " de " + qtdImagens;
						
						Log.e("SavingImageOnDatabaseActivity", "" + qtdImagensInseridas);
						
						publishProgress(msgAndamento);
						
						bancoDeDadosTeste.inserirImagem(imagem);
						
					} catch (FileNotFoundException e) {
						Log.e("SavingImageOnDatabaseActivity", e.getMessage());
						
					} catch (IOException e) {
						Log.e("SalvaImagemAsyncTasc", e.getMessage());
						
					}
					
				}
			}
			
			return null;
		}
		
		@Override
		protected void onProgressUpdate(String... values) {		
			progressDialog.setMessage(values[0]);
		} 
		
		@Override
		protected void onPostExecute(Void result) {
			super.onPostExecute(result);
			
			if (progressDialog != null && progressDialog.isShowing()) {
				progressDialog.dismiss();
			}
		}
		
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			
			progressDialog = ProgressDialog.show(SavingImageOnDatabaseActivity.this, "Aplicativo de testes", "Inserindo imagens...");			
		}
    	
    	
    }

Obrigado a todos.