Criando um arquivo txt ou xml. Para faze o armazenamento de dados

[quote][list][img][url][google][youtube][flash][wmv]

Olá galera.

Sou novo no mundo J2me, e gostaria de uma ajuda.

Estou fazendo uma aplicação em j2me, e não sei como salvar os dados.

Estou com uma idéia de cria um arquivo txt e salvar os dados dentro desse arquivo mais não sei como posso fazer isso.

Alguem pode me ajuda

como que eu faço para cria um arquivo txt e inseri no mesmo?

No j2me existem algumas possibilidades.

Uma delas é usar os record Stores que é uma espécie de banco de dados texto para registrar tuas informações.

Faça assim>

// Para abrir um Recorde store com o nome "RmsExample1" 
RecordStore recStore = RecordStore.openRecordStore("RmsExample1", true); 

// Para Lêr o conteúdo do RecordStore 
byte[] data;
int tamanho;
String item;

for (int recId=1; recId <= recStore.getNumRecords(); recId++){ 
    // O método getRecord returna o tamanho do registro 
    tamanho = recStore.getRecord(recId, data, 0); 

// Converte para String um array de bytes 
    item = new String(data, 0, tamanho); 
} 

//Para gravar uma informacao no banco:
//Cada registro tem um id sequencial

// Este será o dado a ser guardado 
String newItem = "id do Registro " + recStore.getNextRecordID(); 

//Para gravar precisa converter a String que vc quer gravar

// Converte a String para o array de bytes 
byte[] bytes = newItem.getBytes(); 

// Grava o dado no RecordStore 
recStore.addRecord(bytes, 0, bytes.length); 

Abaixo um exemplo completo do que falei no outro comentário,

peguei de um post aqui do guj mesmo.

Aliás se vc quer gravar arquivo texto, basta clicar no campo do google e escrever algo como “j2me gravar texto”, vai aparecer muita coisa que já foi discutida aqui.

Aliás tem pouca coisa que nunca foi discutido aqui. Basta uma pesquisa e todas as tuas dúvidas sobre j2me serão respondidas.

E sobre J2ME tem um ótimo conjunto de apostilas no JEDI (http://jedi.wv.com.br/) basta se registrar e baixar as apostilas do curso Desenvolvimento de Aplicações Móveis. Elas te explicam tudo isso e mais um pouco.


import javax.microedition.midlet.*;   
import javax.microedition.lcdui.*;   
import javax.microedition.rms.*;   
import java.io.*;   
  
public class RMSDemo extends MIDlet implements CommandListener {   
       
    private Display display;   
    private RecordStore rs=null;   
    private Command exit;   
    private RecordEnumeration re;   
    private int recordNO;   
    Form frm;   
    int index=0;   
    public RMSDemo() {   
        display = Display.getDisplay(this);   
           
        //Create a RMS   
        try {   
            rs= RecordStore.openRecordStore("myRecord",false);   
            rs.closeRecordStore();   
        } catch(Exception e) {   
            System.out.println(e);   
        }   
           
    }   
       
    public void startApp()   {   
           
        frm=new Form("RMSDemo");   
  
        exit= new Command("Exit",Command.EXIT,1);   
        frm.addCommand(exit);   
           
        add= new Command("Add",Command.SCREN,1);   
        frm.addCommand(add);   
  
        delete= new Command("Delete",Command.SCREEN,2);   
        frm.addCommand(delete);   
  
        show= new Command("SHOW",Command.SCREEN ,3);   
        frm.addCommand(show);   
           
        frm.setCommandListener(this);   
        frm.append("#####");   
        display.setCurrent(frm);   
    }   
       
    public void pauseApp() {   
           
    }   
       
    public void destroyApp(boolean un) {   
    }   
       
    // Handling commands   
    public void commandAction(Command cmd,Displayable d) {   
        if(cmd==add) {   
            addRecord();   
        } else   
            if(cmd==delete) {   
            removeRecord();   
            } else   
                if(cmd==show) {   
            try {   
                byte b[]= rs.getRecord(recordNO);   
                String s= new String(b);   
                frm.append(s);   
            } catch(Exception e) {}   
                }   
    }   
       
       
    void addRecord() {   
        try {   
            rs= RecordStore.openRecordStore("myRecord",false);   
            index++;   
            byte b[]=("Record NO "+index).getBytes();   
            //Adding record to record store   
            rs.addRecord(b,0,b.length);   
            rs.closeRecordStore() ;   
        } catch(Exception e) {   
            System.out.println(e);   
        }   
           
    }   
       
    // Deleting a record   
    void removeRecord(int recordID) {   
        try {   
            rs= RecordStore.openRecordStore("myRecord",false);   
            rs.deleteRecord(recordID);   
            index--;   
            rs.closeRecordStore();   
        } catch(Exception e) {   
            System.out.println(e);   
        }   
    }   
       
       
}   

Eu queria gera um arquivo txt mesmo, não um recondStore.

Pq tenho que exporta os dados para o pc depois.

OK,

então use algo assim:

String dirTextos = System.getProperty("fileconn.dir.textos");   
  
String fileName = dirTextos + "texto.txt";   
file = (FileConnection) Connector.open(fileName,    Connector.READ_WRITE);   
  
if (! file.exists()) {   
   file.create();   
}   
outStream = file.openOutputStream();   
outStream.write("Frase que eu quero escrever");  

Mas como você vai exportar para o PC???

Sei que você é novo, mas não tem muitas formas de fazer isso. Como você quer
fazer a conexão do MIDP com o PC???

Vo exporta manualmente.

Teria como detalha melhor?

Como eu crio e como eu insiro no arquivo txt?

O criar já está no próprio código que te mandei e o gravar também.

A criação acontece pelo Connector.open e a gravação pelo write.

Escrevendo cada informação via String.
Usando loops que carreguem as String e depois fazendo write delas.
Como em qualquer manipulacao de texto java.

String gravar = "Isto";

outStream.write(gravar);    

Agora, se você tem objetos e quer gravá-los em xml e depois recuperar, vai ter que usar
uma biblioteca chamada ksoap, disponivel na rede, e já ganha uma forma de exportar
os arquivos fazendo um webservice que receba essas informações via protocolo SOAP.

Olá tentei mais ainda não consegui.

[list]public void startApp() throws MIDletStateChangeException {
display.setCurrent(formPrincipal);
try{

    String dirTextos = System.getProperty("file:/c:");     

    String fileName = dirTextos + "texto.txt/";     
    file = (FileConnection) Connector.open(fileName,Connector.READ_WRITE);     

    if (! file.exists()) {     
        file.create();     
    }     
    outStream = file.openOutputStream();     
    String aux = "Ola mundo";
        byte b[] = aux.getBytes();
    outStream.write(b);
    }catch(Exception ex){ex.printStackTrace();}; 
    
}

Está variável “file” e do tipo “FileConnection” e a “outStream” é do tipo “OutputStream”?

Mais mesmo assim de da um erro na linha a baixo, creio que é por causa do caminho do arquivo, quero cria ele dentro do "c:Teste.txt"
file = (FileConnection) Connector.open(fileName,Connector.READ_WRITE);

Gera o erro java.lang.IllegalArgumentException.

Att EduardoSga

ou ele gera o seguinte erro “java.io.IOException: Root is not accessible”

gerado na linha “file.create();”.