PDA

Ver la versión completa : [Consulta] Almacenar información en archivos mediante JAVA



mbr386
05-10-2014, 02:19 AM
Hola, como dice en el titulo... Consulto porque intento almacenar datos en el archivo creado y no obtengo los resultados deseados.

Este es el

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;


public class AccesoAleatorio {

private static RandomAccessFile RAF;
// private int CantidadRegistros,TamañoRegistro;
private int edad = 23;
private String nombre = "Lince del espacio";

public void CrearArchivo(File NombreArchivo) throws IOException{
if (NombreArchivo.exists() && !NombreArchivo.isFile()) {
System.out.println(NombreArchivo.getName() + " no puede crearse ya que no es un archivo");
}
RAF = new RandomAccessFile(NombreArchivo,"rw");
}

public void GuardarRegistros() throws IOException{
RAF.seek(RAF.length());
// CantidadRegistros = (int) Math.ceil((double) RAF.length() / (double) TamañoRegistro);

RAF.writeUTF(nombre);
RAF.writeInt(edad);


}

public void cerrar() throws IOException{
RAF.close();
}


public static void main(String[] args){

AccesoAleatorio clase = new AccesoAleatorio();
try{
clase.CrearArchivo(new File ("Aleatorio.txt"));
clase.GuardarRegistros();

clase.cerrar();
}catch(IOException IOE){}
}}


Y este es el resultado de almacenar los datos:

http://sia1.subirimagenes.net/img/2014/10/05/141005061356365955.png

Al almacenar el entero queda con espacios finalizando con un símbolo, por que motivos sucede esto??
Que recomendaciones me pueden dar, porque la verdad soy un novato en JAVA ?

Saludos

The_Frog
05-10-2014, 06:57 PM
Sugerencia de ignorante que no entiende mucho: si usas RAF.writeUTF(nombre + String.valueOf(edad)), ¿también aparecen esos caracteres?

mbr386
05-10-2014, 07:26 PM
si usas RAF.writeUTF(nombre + String.valueOf(edad))

MUCHAS GRACIAS, SIRVIÓ !!!

Indudablemente voy a seguir aplicando lo que me escribiste que sirvió, pero quiero saber (si lo sabes), navegando encontré como almacenar datos y lo que encontré fue como puse en la consulta. Entonces, hay diferencia en almacenar el contenido de de una variable tipo entero en un archivo, contra la "conversión" a string de una variable tipo entero ???
O solo hay diferencia a la hora de programar... "no queda prolijo pero funciona" ???

The_Frog
05-10-2014, 09:31 PM
Tomate esto con un grano de sal porque puede que tenga mal muchos conceptos.

Depende de dónde estés guardando la información y lo que pretendas hacer con ella. Si estás guardando un valor numérico en un .txt, lo que querés escribir al archivo es el equivalente a la representación en caracteres de sus dígitos. Por ahí writeInt estaba escribiendo el valor en binario directamente.

Al almacenar la información en una base de datos o manipularla en el código, la diferencia va a estar en el tamaño que ocupa el tipo de dato usado, el rango de valores que este puede contener y las operaciones que soporta.

Por ejemplo: si estas mostrando un precio en pantalla lo que mostrás es su representación como una cadena de caracteres, pero en una base de datos lo guardás como decimal o money para poder usarlo en operaciones matemáticas y lo convertís a String sólo cuando necesitas mostrarlo desde la aplicación (el resto del tiempo en el código probablemente uses una variable del tipo BigDecimal).