[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();”.