Problema con formato de una cadena

Tengo un problema con una variable que por la pantalla de la consola se ve perfectamente, pero al almacenarla en un archivo solo se escribe un "cuadrado"
Aquí va el código
import java.io.*;
import java.util.*;
import javax.comm.*;
import java.awt.*;
import java.lang.String.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.Container;
public class java1902 implements Runnable,SerialPortEventListener {
static CommPortIdentifier idPuerto;
static Enumeration listaPuertos;
InputStream entrada;
SerialPort puertoSerie;
Thread tLectura;
private Statement statment=null;
private Connection conexion=null;
private String dir="C:\\Archivos de programa\\Java\\jdk1.6.0_13\\bin\\pesaje.mdb";//direcion de la base de datos
private String nombre="Prueba";//nombre de la conexion
public java1902() {
try {
puertoSerie = (SerialPort)idPuerto.open( "AplLectura",2000 );
} catch( PortInUseException e ) {}
try {
entrada = puertoSerie.getInputStream();
} catch( IOException e ) {}
try {
puertoSerie.addEventListener( this );
} catch( TooManyListenersException e ) {}
puertoSerie.notifyOnDataAvailable( true );
try {
puertoSerie.setSerialPortParams( 9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE );
} catch( UnsupportedCommOperationException e ) {}
tLectura = new Thread( this );
tLectura.start();
}
public void run() {
try {
Thread.sleep( 20000 );
} catch( InterruptedException e ) {}
}
public void serialEvent( SerialPortEvent _ev ) {
String variable, variable2, variable3, variable4, batch, peso,total,cadena;
String var1= new String("");
String var= new String("a");
String var2= new String("b");
String fecha= new String("c");
String hora= new String("c");
int x;
switch( _ev.getEventType() ) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
// Cuando haya datos disponibles se leen y luego se
// imprime lo recibido en la consola
case SerialPortEvent.DATA_AVAILABLE:
byte[] bufferLectura = new byte[8];//valor original 20
try {
x=1;
while( entrada.available() > 0 ) {
int nBytes = entrada.read( bufferLectura );
}
//System.out.print( new String(bufferLectura) );
variable=new String(bufferLectura);
var1="fin fila";
var2=variable;
//System.out.println(variable);
FileWriter fichero= null;
PrintWriter pw = null;
try{
fichero = new FileWriter("c:/Archivos de programa/Java/jdk1.6.0_13/bin/prueba.txt");
pw = new PrintWriter(fichero);
pw.println(var2);//aqui en el archivo me almacena un "cuadrado"
System.out.println(var2);"por pantalla muestra la informacion correcta"
//pw.println(variable);
}catch(Exception e){
e.printStackTrace();
}
finally{
if(null != fichero)
fichero.close();
try{
}catch(Exception e2){
e2.printStackTrace();
}
}
} catch(IOException e) {}
};
}
public static void main( String[] args ) {
// Lista de los puertos disponibles en la máquina. Se carga en el
// mimo momento en que se iniciala JVM de Java
listaPuertos = CommPortIdentifier.getPortIdentifiers();
while( listaPuertos.hasMoreElements() ) {
idPuerto = (CommPortIdentifier)listaPuertos.nextElement();
if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL ) {
if( idPuerto.getName().equals("COM3") ) { // WINDOWS
// Lector del puerto, se quedará esperando a que llegue algo
// al puerto
java1902 lector = new java1902();
}
}
}
}
}

1 respuesta

Respuesta
1
Lo que pasa es que en consola el sistema imprime el objeto en forma de string, y cuando lo guardas al archivo lo que guarda es una referencia entonces se guarda un Objeto String
tienes que cambiar este código
pw. Println(var2);//aquí en el archivo me almacena un "cuadrado"
Por este
Pw. Println(var2.toString());//aqui en el archivo me almacena un "cuadrado"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas