Lê subpastas e traga na tela do emulador

Oi pessoal, sou novo na aplicação java e estou desenvolvendo trabalho de conclusão de curso,
preciso criar um codigo que lê o nome das pastas e traga na tela.

Ex:

Tenho uma basta biblioteca, dentro dela existe subpastas

  • casa
  • carro
  • moto
  • mochila

eu quero que ele leia estas pastas e depois tragas na tela, para que o usuario faça uma escolha
e se eu adicionar mas pastas então fara verificação e trara na tela do emulador. alguem teria como me dar uma
ideia de fazer isto?

Agradesço a atenção! :smiley:

[code] File f = new File(“caminho da pasta raiz”);

	for (File  file : f.listFiles()) {
		
		if(f.isDirectory())
			System.out.println("O arquivo " + file.getName() + " é uma pasta.");
	}[/code]

espero que ajude.

Vai ter que usar jsr pra isso, e não sei se sabe mas nem todos os aparelho a suportam, alias só alguns…
Procure por JSR 75 (File Connection)

http://www.google.com.br/search?hl=pt-BR&lr=lang_pt&client=firefox-a&rls=org.mozilla:en-US:official&hs=ELJ&ei=YdGSSv3QG8WHtge7hcXOBA&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=jsr+75+fileconnection&spell=1

Abraços
Ricoldi

[quote=mario.fts][code] File f = new File(“caminho da pasta raiz”);

	for (File  file : f.listFiles()) {
		
		if(f.isDirectory())
			System.out.println("O arquivo " + file.getName() + " é uma pasta.");
	}[/code]

espero que ajude.[/quote]

Ai que burro, dá zero pra ele !

Aloooouuuu !! Isto aqui é fórum de J2ME !

[quote=boone][quote=mario.fts][code] File f = new File(“caminho da pasta raiz”);

	for (File  file : f.listFiles()) {
		
		if(f.isDirectory())
			System.out.println("O arquivo " + file.getName() + " é uma pasta.");
	}[/code]

espero que ajude.[/quote]

Ai que burro, dá zero pra ele !

Aloooouuuu !! Isto aqui é fórum de J2ME ![/quote]

uaheuhauehaue é eu vi, mas nem optei por comentar… já você né…uaheuaheuaheuaheau

Pelo que eu analise este codigo não funciona em J2me, favor me de um caminho a seguir. agradeço a atenção!

Montei esta estrutura conforme JSR e não lista as pastas de um diretorio. Por favor alguem poderia me ajudar? agradeço a atenção!

FileConnection fc = (FileConnection) Connector.open(“file:///C:/dados.txt”);
Enumeration e = fc.list();
while (e.hasMoreElements()) {
System.out.println(((String)e.nextElement()));
}

Perai… posso estar enganado, faz tempo que não uso a 75… mas você esta abrindo um arquivo:

FileConnection fc = (FileConnection) Connector.open("file:///C:/dados.txt"); 

e mandando listar pastas:

Enumeration e = fc.list(); 

http://www.javamovel.com/2009/06/como-acessar-arquivos-usando-api-jsr-75.html
http://www.javamovel.com/2009/06/jsr-75-file-connection-api.html

FileConnection fc = (FileConnection) Connector.open(“file:///C:/”);

Desculpa esqueci de tirar, mas mesmo assim não consigo listar as pastas do diretorio. Estou usando o netbeans para realizar estes teste e o weriless toolkit 2.5. Preciso urgente deste codigo funcionando. agradeço atenção.

“C:/” é realmente uma raiz sua? dá uma lida nos links que passei que será impossivel não fazer.

Posso estar errado, mais estou tendando fazer um teste listando o meu proprio diretorio do PC, por tanto criei este codigo simples para fazer os teste. por favor me ajudem!

import java.io.IOException;
import java.util.Enumeration;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.lcdui.;
import javax.microedition.midlet.
;

public class Midlet extends MIDlet implements CommandListener
{

private Display display;
private Form fmMain;
private Command cmExit;
private Command cmOk;

public Midlet () throws IOException{

display = Display.getDisplay(this);

cmExit = new Command("Sair", Command.EXIT, 1);
cmOk = new Command("Ok", Command.EXIT, 1);
fmMain = new Form("Disciplinas");
fmMain.addCommand(cmExit);
fmMain.addCommand(cmOk);
fmMain.setCommandListener(this);

}

public void ListarDiretorio() {
try {
FileConnection fc = (FileConnection)Connector.open(“file:///C:/NovoDiretorio/”,Connector.READ_WRITE);
if (fc. isDirectory()) {
Enumeration e = fc.list();
fmMain.deleteAll();
fmMain.append(“Arquivos do diretório:\n”);
while (e.hasMoreElements()){
fmMain.append("\n"+((String)e.nextElement()));
System.out.println(“alguma coisa!”);
}
}

}catch( Exception e ){
e.printStackTrace();
}
}

public void startApp(){

display.setCurrent(fmMain);
}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction (Command c, Displayable s){

    if (c == cmExit){
        destroyApp(false);
        notifyDestroyed();
                    }
}

}

Aqui um exemplo para você e para quem precisa acessar arquivos, este exemplo lista as raizes e toda a sua sub-cadeia, tanto de pastas quanto arquivos.

Fiz este arquivo correndo, então se tiver algum erro peço aos trolls que se acalmem.

Só lembrando que o emulador não acessa as pastas do computador, ele tem sua propria "unidade virtual" que fica normalmente:

DefaultColorPhone Windows: documents and settings\j2mewtk\2.5.2\appdb\DefaultColorPhone\filesystem"
DefaultColorPhone Linux ~/j2mewtk/2.5.2/appdb/DefaultColorPhone/filesystem


import java.io.IOException;
import java.util.Enumeration;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.io.file.FileSystemRegistry;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;

public class Main extends MIDlet implements CommandListener {

    private List form;
    private Command cmdsair;

    public Main() throws IOException {


        cmdsair = new Command("Sair", Command.EXIT, 1);
        form = new List("Pastas", List.IMPLICIT);
        form.addCommand(cmdsair);
        form.setCommandListener(this);

        new Thread() {

            public void run() {
                listarTudo();
            }
        }.start();

    }

    private void listarTudo() {
        Enumeration en = FileSystemRegistry.listRoots();

        while (en.hasMoreElements()) {
            try {
                listarDiretorio("", (String) en.nextElement());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }


    }

    public void listarDiretorio(String nivel, String caminho) throws IOException {
        FileConnection fc = (FileConnection) Connector.open("file:///" + caminho, Connector.READ);

        if (fc.isDirectory()) {
            String nome = fc.getName();
            if (nome.length() == 0) {
                nome = caminho;
            }
            
            form.append(nivel + nome, null);
            Enumeration e = fc.list();
            while (e.hasMoreElements()) {
                listarDiretorio(nivel + ">", caminho + "/" + e.nextElement());
            }
        } else {
            form.append(nivel + fc.getName(), null);
        }
    }

    public void startApp() {
        Display.getDisplay(this).setCurrent(form);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }

    public void commandAction(Command c, Displayable s) {
        if (c == cmdsair) {
            destroyApp(false);
        }
    }
}

Espero que ajude.

Ê paizão… :smiley:

Ê paizão… :smiley:
[/quote]

rs…

Recoldi, quero agradecer a atenção! o codigo ta funcionando perfeitamente. valew!