ArrayList de array

5 respostas
A

pessoal to com um probleminha em recuperar um arraylist deem uma olhada no código

Função em uma classe para listar os arquivos de um diretório e retona

public ArrayList listaDir(String diretorio){
		Long tamanho   = new Long(0);
		long timestamp = 0;
		String data    = "";
		String md5     = "";
		
		ArrayList matriz        = new ArrayList();  
		String[] arquivo        = new String[4];  
		SimpleDateFormat dtHora = new SimpleDateFormat("dd/MM/yyyy hh:mm");
		
		try{
			File dir   = new File(diretorio);
			File[] sub = dir.listFiles();
			for (int i = 0; i < sub.length; i++) {
				File f = sub[i];
				if (!f.isDirectory()) {
					tamanho = f.length()/1024;
					timestamp = f.lastModified();
					Date dtArq = new Date(timestamp);
					data = dtHora.format(dtArq).toString();
					md5  = getMD5Checksum(f.getAbsolutePath().toString());
					
					arquivo[0] = f.getName().toString();
					arquivo[1] = md5;
					arquivo[2] = tamanho.toString();
					arquivo[3] = data;
				}
				matriz.add(arquivo);
			}
		}catch (Exception e) {
		}
		return matriz;
	}

função para exibir o os dados buscados pela função acima, detalhe para a linha 04

Funcoes func = new Funcoes();
	ArrayList matriz = func.listaDir("C:\Documents and Settings\alexandre.rodrigues\Desktop\txt's"); 
	for(int i = 0; i < matriz.size(); i++){
		String[] arquivo = matriz.get(i); //como faço para jogar o item no array???
	%>
		<tr>
			<td><span class="upper"><%= arquivo[0]%></span></td>
			<td nowrap="nowrap"><%= arquivo[1]%></td>
			<td nowrap="nowrap"><%= arquivo[2]%></td>
			<td><span class="upper"><%=arquivo[3] %></span></td>
		</tr>
	<%
	}

5 Respostas

Jair_Rillo_Junior

Alex,

Se você estiver usando Java 1.4 ou inferior, você deve fazer um cast manual na linha 4… algo assim

String[] arquivo = (String[]) matriz.get(i);

Agora se você está usando Java 1.5 ou superior, aconselho você dar um olhada em generics e for-each, vai facilitar bastante a manipulação de collections :wink:

wagner_a_lima

Voce pode definir o ArrayList da seguinte maneira:

ArrayList<String[]> matriz        = new ArrayList<String[]>();

Dessa maneira não será necessário fazer cast do objeto retornado da posição do ArrayList.

J

E ai Jou!
Olha se a sua função listaDir estiver correta o problema pode ser só uma falta de cast…
Tenta colocar assim:

//antes....
// for(int i = 0; i < matriz.size(); i++){  
//         String[] arquivo = matriz.get(i); //como faço para jogar o item no array??? 
//
//depois...
for(int i = 0; i < matriz.size(); i++){  
         String[] arquivo = (String[])matriz.get(i);
//resto do codigo...

Espero que resolva!

A

Jair, vlw

Funcionou 100%

J

:wink:

Criado 23 de outubro de 2008
Ultima resposta 23 de out. de 2008
Respostas 5
Participantes 4