FileConnection - JSR 75

Definição

Muitos aparelhos permitem criar arquivos texto na memória. Para isso verifique se o Java do seu celular suporta o JSR 75 (geralmente nas características técnicas fala sobre isso).

O exemplo abaixo foi testado no emulador do Nokia S40 e no aparelho físico Nokia 6060

Tela

Fonte

import java.io.IOException;

import java.io.OutputStream;

import javax.microedition.io.ConnectionNotFoundException;

import javax.microedition.io.Connector;

import javax.microedition.io.file.FileConnection;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

 

public class Principal extends MIDlet implements CommandListener {

    

    private Form form;

    private Display display;

    private TextField nomeField;

    private Command salvarCommand;

    

    public Principal() {

        

        // captura o display

        display = Display.getDisplay(this);

        form          = new Form("Título");

        salvarCommand = new Command("Salvar", Command.SCREEN, 0);

        nomeField     = new TextField("Nome:"  , ""20, TextField.ANY);

        

        // coloca tudo no form

        form.addCommand(salvarCommand);

        form.append(nomeField);

        form.setCommandListener(this);

        

        // ativa o form

        display.setCurrent(form);

    }

    

    public void commandAction(Command command, Displayable displayable) {

        

        if (command == salvarCommand) {

            if (salvarArquivoTexto()) {

                Alert alerta = new Alert("Atenção""Arquivo salvo!", null, AlertType.INFO);

                display.setCurrent(alerta);

            }

        }

        

    }

    

    public boolean salvarArquivoTexto() {

        

        boolean result = false;

        String filename = "file:///c:/predefgallery/predefphotos/Nokia.txt";

        

        try {

            

            byte[] data;

            String s;

            

            OutputStream outputStream;

            FileConnection fileConnection = (FileConnection) Connector.open(filename); //, Connector.READ_WRITE);

            

            if (fileConnection.exists()) {

                outputStream = fileConnection.openOutputStream(fileConnection.fileSize()); // append

            } else {

                fileConnection.create();

                outputStream = fileConnection.openOutputStream();

            }

            

            data = nomeField.getString().getBytes();

            outputStream.write(data);

            

            outputStream.close();

            fileConnection.close();

            

            // exibe que deu tudo certo...

            Alert alert = new Alert("Completo!""Nome gravado no txt", null, null);

            alert.setTimeout(Alert.FOREVER);

            alert.setType(AlertType.CONFIRMATION);

            display.setCurrent(alert);

            

            // retorna verdadeiro

            result = true;

            

        } catch (ConnectionNotFoundException error) {

            

            Alert alert = new Alert("Erro!""Não acesso o arquivo.", null, null);

            display.setCurrent(alert);

            

        } catch(IOException error) {

            

            Alert alert = new Alert("Erro!", error.toString(), null, null);

            display.setCurrent(alert);

        }

    

        return result;

    }

    

    public void startApp() { }

    public void pauseApp() { }

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

}