Como acessar arquivos usando a API JSR 75

16 junho 2009

No post JSR 75 - File Connection API descobrimos como funciona a API. O Pacote opcional de conexão de arquivos (FCOP) permite aos desenvolvedores o acesso de diversas formas de dados, tais como imagens, sons, vídeos, txt e muito mais, sobre o sistema de arquivo do dispositivo móvel.

Vejamos agora como acessar arquivos na memória do mobile.

Criando um arquivo .txt

public void CriarArquivo() {
try {
//cria arquivo no cartão de memória
FileConnection fc = (FileConnection)Connector.open("file:///e:/NovoDiretorio/dados.txt");
if(!fc.exists()) {
fc.create();
}

OutputStream out = fc.openOutputStream();
out.write(new String("Texto do arquivo").getBytes());

fc.close();
} catch(IOException e) {
e.printStackTrace();
}
}

Acessando um arquivo .txt

public void LerArquivo() {
String nomeArquivo = "dados.txt";
try {
FileConnection fc = (FileConnection)Connector.open("file:///e:/NovoDiretorio/" + nomeArquivo);
form.deleteAll();
if(!fc.exists()) {
form.append("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));
}

fc.close();
} catch (Exception e) {
e.printStackTrace();
}
}

Criando uma pasta no cartão de memória

public void CriarDiretorio() {
try {
FileConnection fc = (FileConnection)Connector.open("file:///e:/NovoDiretorio/");
if(!fc.exists()) {
fc.mkdir();
}
fc.close();
} catch(IOException e) {
e.printStackTrace();
}
}

Como deletar um arquivo

public void ApagarArquivo() {
try {
FileConnection fc =

(FileConnection)Connector.open("file:///e:/NovoDiretorio/dados.txt",Connector.READ_WRITE);
if (fc.exists()) {
fc.delete();
}
}catch( Exception e ){
e.printStackTrace();
}
}

Listar arquivos de um diretório

public void ListarArquivos() {
try {
FileConnection fc =

(FileConnection)Connector.open("file:///e:/NovoDiretorio/",Connector.READ_WRITE);
if (fc. isDirectory()) {
Enumeration e = fc.list();
form.deleteAll();
form.append("Arquivos do diretório:\n");
while (e.hasMoreElements()){
form.append("\n"+((String)e.nextElement()));
}
}

}catch( Exception e ){
e.printStackTrace();
}
}

Obs.: Para chamar as funções anteriores use uma thread semelhante a esta:

Thread t = new Thread(new Runnable() {
public void run() {
ApagarArquivo();
}
});
t.start();

3 comentários:

  • Eh estritamente necessario chamar o metodo dentro de uma thread?

  • Rodolfo

    É recomendável, pois dependendo do tamanho do arquivo isso pode levar alguns segundos. Delay na transação é chato né? =)

  • Bernardo

    E para enviar um arquivo via USB, através de socket, você teria algum exemplo? Ou saberia dizer como funciona o IP de um celular, para que possa conectar o cliente (celular) no servidor (computador) via socket.

  • Postar um comentário