j2me: ler arquivo texto (Resolvido)

Olá a todos:
não sei como colocar o caminho corretamente para encontrar e ler o arquivo Teste.txt no meu SmartPhone.
Ele está na pasta Application.
Obrigado a quem puder ajudar.

public String lerArquivo(){ try{ int chr = 0; InputStream arquivo = getClass().getResourceAsStream("[b]Teste.txt[/b]"); StringBuffer stb = new StringBuffer(); while ((chr = arquivo.read())!= -1) { stb.append((char)chr); char st = (char)chr; if (st=='\n') { System.out.println("Quebra de linha"); } } return stb.toString(); }catch (Exception e){ e.printStackTrace(); } return null; }

que plataforma vc esta?

j2me
windows mobile 6.5
vm: phoneME

Tem q estar dentro do JAR - http://developers.sun.com/mobility/midp/questions/res/

Obrigado Fernando!
Amanhã cedo testo e posto como ficou.
É que estou saindo do trabalho.
Até mais.

executo e não acontece nada.
Nem mesmo mensagem de erro:

[code]try {
Class c = this.getClass();
InputStream is = c.getResourceAsStream(“file:///e:/Application/MDO.txt”);
StringBuffer str = new StringBuffer();
byte b[] = new byte[1];

        while ( is.read(b) != -1 ) {
            str.append(new String(b));
        }
        is.close();
        System.out.println(str);
    }
    catch (IOException e) {
        mostrarAlerta("ERRO", "Não encontrei arquivo");
    }[/code]

Vc ta mostrando o resultado na system…aonde vc ta executando isso? No emulador?

É no coletor.
Mas comento a linha do system.out…

Não ta mostrando pq no codigo vc não ta fazendo nada visual…

Está dentro de uma Thread e ela não termina, trava.

tem como postar mais detalhes do codigo? para q possamos verificar melhor onde está o problema…vc falou em um erro na execução de um Thread… parece um erro de lógica e não de código em si…

Olá,
mudei para FileConnection para ver no que dá.
E também não consegui.
Caio sempre no exception.
Vai a lógica e o código:

Ao acionar o item de menu importar, chamo o método:

private void connectThread(){ t = new Thread(this); t.start(); }
que por sua vez:

[quote]public void run() {
if (sThread.equals(“cImporta”)){
LeArquivo();
}
}[/quote]

método LeArquivo:

[code] private void LeArquivo(){

    String nomeArquivo = "Silvio.txt";
    try
        {
            FileConnection fc = (FileConnection) Connector.open("file:///e:/Application/" + nomeArquivo, Connector.READ_WRITE);
            if (!fc.exists())
            {
                mostrarAlerta1("ERRO", "Arquivo não encontrado!!!");
            }
            else
            {
                InputStream is = fc.openInputStream();
                byte b[] = new byte[1024];
                int length = is.read(b, 0, 1024);
                //form.append("Conteúdo do arquivo "+nomeArquivo + ": \n"+ new String(b, 0, length),null);
                mostrarAlerta1("CORRETO", "Arquivo encontrado!!!");
            }
            fc.close();
        }
    catch (Exception e)
        {
            mostrarAlerta1("ERRO", "Erro na lógica");
        }[/code]

Pessoal,
utlizei este comando para verificar se api FileConnection está disponível no aparelho
e não está:

boolean isAPI = System.getProperty("microedition.io.file.FileConnection.Version") != null; if (!isAPI){ mostrarAlerta("ERRO", "JSR75 não disponível"); }else{ mostrarAlerta("CORRETO", "JSR75 disponível"); }

Peço por gentileza o favor de verificarem se estou correto.
É um motorola MC65 - windows mobile 6.5

Você só precisa colocar seu texto na pasta “/res” do projeto e para acessá-lo basta colocar o nome dele:

No Netbeans você seleciona o projeto, vai em Propriedades, vai em Bibliotecas & Recursos, Adicionar pasta, e adiciona a pasta /res.

Só isto.

InputStream is = getClass().getResourceAsStream("Texto.txt");
       

Obrigado!!!
Mas pela falta de conhecimento faço uma pergunta:
Posso acessar este arquivo “Texto.txt” em uma pasta do celular ou ele será sempre fixo junto com o aplicativo?
É que este arquivo texto vai estar no celular e vai mudar o conteúdo sempre.
Obrigado!

Vejam como ficou:
funcionou legal para Motorola MC65 - windows mobile 6.5
Este site ajudou muito: http://www.lte.com.tr/uploads/pdfa/31.pdf
Obrigado a todos que me ajudaram.

String nomeArquivo = "file:////Application/Silvio.txt"; try { FileConnection fc = (FileConnection) Connector.open("file:////Application/Silvio.txt"); if (!fc.exists()) { mostrarAlerta1("ERRO", "Arquivo não encontrado!!!"); } else { InputStream is = fc.openInputStream(); StringBuffer stb = new StringBuffer(); byte b[] = new byte[1]; int chr = 0; while ((chr = is.read())!= -1) { stb.append((char)chr); char st = (char)chr; if (st=='\n') { //System.out.println("Quebra de linha"); } } is.close(); mostrarAlerta1("CORRETO", stb.toString()); } fc.close(); } catch (Exception e) { mostrarAlerta1("ERRO", "lógica"); }

[quote]Obrigado!!!
Mas pela falta de conhecimento faço uma pergunta:
Posso acessar este arquivo “Texto.txt” em uma pasta do celular ou ele será sempre fixo junto com o aplicativo?
[/quote]

Eu dei a sujestão anterior porque você estava usando getResourceAsStream(). Para este método o arquivo tem que estar no Jar, como eu te expliquei, e ele fica fixo, não pode ser alterado. Para acessar arquivos você precisa usar FileConnection(). Este link ensina tudo:
http://developers.sun.com/mobility/apis/articles/fileconnection/

Um abraço.

Mais uma vez obrigado!!!
É muito bom ter conhecimento.
Agora conheço estas duas maneiras de acessar arquivos textos.
Valeu mesmo.