Qual o melhor jeito que eu posso fazer esse programa?

Galera gostaria de uma dica dos mais experientes
sou novo com JME estou lendo bastante sobre o assunto
eu tenho que receber dados por bluetooth, esses dados preciso armazenar todos e depois gerar um arquivo txt para passar para o pc
como temos que andar com um passo na frente do outro, estou fazendo primeiro a parte de gravar esse arquivo
ja aprendi a fazer um display simples e ler um txt
mas nao estou conseguindo gravar em um arquivo ja existente.
primeiro que nao entendi muito bem a parte de pastas do cel ou o Connector
usei algo + - assim

[code] public boolean writeFile(String path, byte[] data){
javax.microedition.io.Connection c = null;
java.io.OutputStream os = null;
try {
c = javax.microedition.io.Connector.open(“file://Data/Documents4/” + path, javax.microedition.io.Connector.READ_WRITE);
//c = javax.microedition.io.Connector.open(“file:///4/” + path, javax.microedition.io.Connector.READ_WRITE);
javax.microedition.io.file.FileConnection fc = (javax.microedition.io.file.FileConnection) c;

        if (!fc.exists())
            fc.create();
        else
            fc.truncate(0);

        os = fc.openOutputStream();
        os.write(data);
        os.flush();
        
        return true;

    } catch (Exception e) {
        e.printStackTrace();
        return false;
    } finally {
        try {
            if (os != null)
                os.close();
            if (c != null)
                c.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}[/code]

soh que ele sempre me retorna um erro falando que o root nao foi especificado
ou aparece uma msg no tel falando que estou tentando criar um arquivo logo que ele passa pela linha

gostaria de saber se algume tem alguma ideia melhor de como fazer isso
ou se alguem poderia me ajudar a gravar esse arquivo.

att
Derick Conti Pereira

Derickcp, bom dia!

Em 1° l lugar, este programa vai funcionar em 1 único tipo de celular? Pois cada celular pode ou ao possuir a jsr 75 (Responsável por acessar as pastas do celular), e cada celular possui uma hierarquia de pastas e raízes.

Em meu caso fiz uma janela tipo ?open/save? do windows, onde a pessoa vai listando as pastas e o nome do arquivo que quer ?Salvar / Carregar?.

O erro que esta acontecendo é porque na sua URL não possui a raiz sendo file://Data/Documents4/, e deveria ter algo como ?c:?(Relativo ao aparelho!) antes do ?data/documents4/? (Para testar coloque a raiz do aparelho que esta usando, mas tem que deixar todo o endereço dinâmico para funcionar em vários celulares)

Para listar os diretórios raízes do celular use

Enumeration e = FileSystemRegistry.listRoots();

Aqui no guj tem bastante coisa sobre isso:
http://www.google.com.br/search?hl=pt-BR&client=firefox-a&rls=org.mozilla:pt-BR:official&hs=NlV&ei=BSWQScq9Co_ftgfUr_SgCw&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=jsr+75+fileconnection+site%3Awww.guj.com.br&spell=1

Getting Started with the FileConnection APIs
http://developers.sun.com/mobility/apis/articles/fileconnection/

Componentes personalizados do Visual Mobile Designer: Navegador de arquivo
http://www.netbeans.org/kb/60/mobility/filebrowser_pt_BR.html

Espero que sirva para se guiar um pouco.
Qualquer duvida, posta ai.

Abraços,
Ricoldi

blz desde ja agradeço muito
mas vc disse que esse fipo de pasta eh de um celular especifico
no caso estou trabalhando aki no netbeans mesmo
e ja tentei diversos caminhos
como por exemplo c:/ ou d:/ e assim vai
nao funcionou nem mesmo no meu pc.
como o netbeans simula o esquema de pastas?

Bom dei uma lida em mais coisas sobre jme, pastas e entrei em mais foruns


soh que agora parei num ponto que nao entendo
essa msg eh normal? como faco para ela aceitar a alteracao do arquivo?

[quote=derickcp]Bom dei uma lida em mais coisas sobre jme, pastas e entrei em mais foruns


soh que agora parei num ponto que nao entendo
essa msg eh normal? como faco para ela aceitar a alteracao do arquivo?

[/quote]

Escolha “Yes” e seja feliz ! :lol:

Outra maneira seria vc comprar um certificado, assinar tua aplicação e por fim configurar o aparelho para não mais emitir a mensagem.
Para quem tem dinheiro para gastar e acha que compensa… :?

cara mas se eu aperto yes nao acontece nada
no caso estou no debug ele para mesmo se eu apertar yes nao muda nada na minha vida nem da do debug
alguma ideia plz

quando eu clico no yes ele aparece isso no console
Running in the identified_third_party security domain
Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.

derickcp,

Bom dia, novamente.

Acontece isso porque você esta colocando métodos para serem executados na thread principal do programa.

“void potential deadlock” http://pt.wikipedia.org/wiki/Deadlock

Você tem que colocar o método em uma thread concorrente.

use assim:

public void commandAction(Command _cmd, Displayable _dsp) {
  if (_cmd.equals(cmdopcoes)) {
     new Thread() {
        public void run() {
           processaOpcoes();
        }
     }.start();
  }

Não se pode travar a thread principal de um programa, seja em qualquer tipo de aplicação para qualquer tipo de sistema.

Espero ter sido claro.

Abraços
Ricoldi

blz vou tentar fazer com thread no final de semana
ate agora agradeco muito a todos que tenham tentado me ajudar

Funcionou perfeitamente uma coisa que foi muito util foi esse link que vc me passou ele eh perfeitamente completo
http://developers.sun.com/mobility/apis/articles/fileconnection/

eh muito util essa parte de listar os roots
que era onde eu estava me perdendo ja que ele cria uma pasta para vc sendo assim nao tem como mandar ele salvar no c: pelo que entendi

soh tenho um problema
toda hora temos que aceitar

existe alguma maneira de nao pedir essa telinha de aviso falando que vamos gravar algo em algum arquivo???

[quote=ricoldi]derickcp,

Bom dia, novamente.

Acontece isso porque você esta colocando métodos para serem executados na thread principal do programa.

“void potential deadlock” http://pt.wikipedia.org/wiki/Deadlock

Você tem que colocar o método em uma thread concorrente.

use assim:

public void commandAction(Command _cmd, Displayable _dsp) {
  if (_cmd.equals(cmdopcoes)) {
     new Thread() {
        public void run() {
           processaOpcoes();
        }
     }.start();
  }

Não se pode travar a thread principal de um programa, seja em qualquer tipo de aplicação para qualquer tipo de sistema.

Espero ter sido claro.

Abraços
Ricoldi[/quote]

Releia a resposta que te dei anteriormente. Lá existe a solução para isto.

eu li sim soh que queria saber uma maneira economica sem comprar nada rs rs

O Padre Quevedo responde pra você: Isto no ecziste ! 8)