Wenas
Código:
public static void listado (File folder)
{
ArrayList lista = new ArrayList();
lista.add("INBOX");
lista.add("INBOX.Carpeta1");
lista.add("INBOX.Carpeta1.Carpeta11");
lista.add("INBOX.Carpeta1.Carpeta11.Carpeta111");
lista.add("INBOX.Carpeta1.Carpeta21");
lista.add("INBOX.Carpeta2");
lista.add("INBOX.Carpeta2.Carpeta12");
lista.add("INBOX.Carpeta3.Carpeta3.Carpeta31");
lista.add("INBOX.Trash");
String [] tmp = {};
int lengthtmpant = 0;
int lengthtmp = 0;
String textOut = "<carpeta>";
int j=0;
while (j<lista.size())
{
lengthtmpant = lengthtmp;
tmp = ((String)lista.get(j)).split("\\.");
lengthtmp = tmp.length;
for(int k=1;k<tmp.length;k++)//hacer las respectivas tabulaciones
textOut += "\t";
if (lengthtmpant > 0 && lengthtmp < lengthtmpant)
{
while (lengthtmp <= lengthtmpant) //si son distintos es que estamos en otro nodo. eltmpant.length>0 sirve para que no entre la primera vez que pasa por el bucle (j=0)
{
textOut += "</sub"+lengthtmpant+">";
lengthtmpant --;
}
}
textOut += "<sub"+lengthtmp+">";
textOut += tmp[lengthtmp-1];//escribir solo el hijo
textOut += "\n";
j++;
}
textOut += "</carpeta>";
System.out.println(textOut);
}
Reconoce que no iba tan desencaminado, chato. (Algun while de mas...).
En mi codigo de la clase pepito, la clase que uso para probar cosas asi, inbox lo considera sub1, carpeta1 sub2...
Saludos