Our Country Sites: Argentina|Brazil|Chile|Mexico|Peru

Archivos en la SD Card

Versión para impresiónVersión para impresiónSend by emailSend by email

Gente que tal, por si alguno necesitara trabajar con archivos en la SD Card, esto les podría servir:

String path = "file:///Storage Card/";
private FileConnection fc;

public void crearArchivo(String name) throws IOException {
        fc= (FileConnection) Connector.open(path + name,Connector.READ_WRITE);
        if(!fc.exists()) {
            fc.create();
        }
        else{
            ...
        }
    }

public void borrarArchivo(String name) throws IOException {
        fc= (FileConnection) Connector.open(path + name,Connector.READ_WRITE);
        if(fc.exists()) {
            fc.delete();
        }
        else{
            ...
        }
    }

public void modificaArchivo(String name, byte[] data) throws IOException{
        fc= (FileConnection) Connector.open(path + name,Connector.READ_WRITE);
        if(fc.exists()) {
            borrarArchivo(name);
            crearArchivo(name);
            OutputStream out = fc.openOutputStream();
            out.write(data);
            out.close();
        }
        else{
            ...
        }
    }

Obviamente la lógica y el path pueden cambiar. Espero les ayude en algo,

Slds!
Juan Carlos

Que acceso seria mas rapido SD CARD ó RMS.

Eso quiere decir que se puede persistir datos en la memoria SD, has probado hacerlo de ser asi que tan rapido es este acceso R/W, sera mas rapido que al RMS. Gracias de antemano.

Debe depender bastante de la

Debe depender bastante de la velocidad de acceso a la tarjeta y la velocidad de grabación de la tarjeta, pero generalmente guardar en el equipo es mucho mas rápido.

Si quieres grabar tu

Si quieres grabar tu información en la tarjeta SD por necesidad, lo que podrías hacer para mejorar el rendimiento, es que guardes tu información en la memoria del equipo, y creas un Thread en j2me que se encargue de pasar de la memoria del equipo a la tarjeta SD los datos, mientras tu aplicacion movil esta haciendo otras cosas

Pero estarías creando un hilo

Pero estarías creando un hilo adicional, que gestionaría el grabado en el equipo, el pase a la memoria SD y el borrado posterior el equipo. No se estaría aumentando la complejidad? Me parece que no amerita.

Te pongo este ejenplo, si

Te pongo este ejenplo, si estas tomando varias fotos, seria mas rapido grabarlas en memoria del equipo para luego pasarlas al sd card, para que el usuario no este esperando por demasiado tiempo la grabacion de las fotos, asi pueda continuar con el flujo del programa, si solo va a grabar un solo archivo en el sd-card no hay problema pero si va a transferir muchos archivos en el sd-card mejor seria ver otras alternativas, recuerda que el usuario no tiene la misma paciencia que tu para programar, el quiere terminar rapido su trabajo

Primero deberia medirse si la

Primero deberia medirse si la demora es significativa como para grabar 2 veces, teniendo en cuenta que tendremos que crear un hilo que va a disminuir la performance del aplicativo. Imagina que estas tomando una foto, se graba en el equipo, deseas tomar otra foto mientras por detras el equipo esta guardando en la tarjeta, y borrando la original mientras intentas grabar una tercera foto. Aumenta la complejidad, pues debes tener cuidado de no borrar y grabar a la vez. Es mejor un proceso limpio, en mi opinion, que dos procesos en paralelo que pueden colisionar entre si.

HP; No he podido probar con

HP;
No he podido probar con cantidad de datos, te invito hacerlo con el código adjunto y entiendo que si has realizado pruebas con RMS por ende indicarnos como te va y comentárnoslo.

Slds!
Juan Carlos

Es necesario contar con algun

Es necesario contar con algun permiso adicional para poder usarlo? No necesita firma, no?

No he necesitado firmar la

No he necesitado firmar la aplicación, me ha funcionado sin permiso alguno. Pero por decir, si jalaran la información de la unidad, p.e. el número del equipo, donde si necesitas si ó si firmar la aplicación, necesitarás asumo poner los permisos javax.microedition.io.Connector.file.read y el de escritura también.

Slds!
Juan Carlos

Respuesta

En el caso que le pongas algun tipo de permiso, necesitará necesariamente una firma. Adicional a esto tendrias que verificar si la SD es compatible con el equipo.

Slds,

EP

Enrique. Hay permisos, como

Enrique. Hay permisos, como los del CustomerCare, que requieren firma de forma mandatoria. Es decir, si incluyes ese permiso y no lo firmas, se mostraran problemas con los permisos y el aplicativo no podra ejecutarse en el equipo. Pero hay otros permisos, como para la foto, que te piden autorizacion para ejecutarlo. Es engorroso tener que dar autorizacion cada vez que lo uses, pero el app funciona y puedes modificarlo cuantas veces quieras en desarrollo sin tener que realizar la firma.
Con respecto al SD, hay nuevas versiones, como el SDHC y el SDXC, que son incompatibles con equipos con el estandar SD original.