Ayuda para convertir contenido de hashtable en una secuencia de caracteres
Hola.
Estoy escribiendo un pequeño programa en java que carga usa secuencia de caracteres en una hashtable para poder cambiar caracteres en una posicion especifica de una manera rápida y comoda.
Mi problema surge al intentar guardar el contenido de la hashtable como secuencia de caracteres. si utilizo la funcion toString() me devuelve la secuencia pero cono comas separando cada caracter, si intento guardarlo con write object me guarda un monton de cosas aparte de los caracteres, y la unica forma que he encontrado es ir tomando el contenido de cada posicion del hashtable (mediante un loop for) y agregandolo en una string. El problema de este metodo es que para secuencias muy larga se hace muy lento a la hora de guardar un archivo. Alguna sugerencia de que otro sistema podrÃa probar????
Gracias
P.D. este es el codigo a modificar:
void mnGuardar_actionPerformed(ActionEvent e){
int salto=0;
String secuencia="";
fd.setMode(fd.SAVE);
fd.show();
if(fd.getFile()==null)return;
try{
FileOutputStream fo=new FileOutputStream(fd.getDirectory()+"\"+fd.getFile());
secuencia=">";
secuencia+=textnombre.getText()+"n";
textSecuencia.append("nGuardandon");
for (int i=0;i<datos.size();i++){
secuencia+=datos.get(new Integer(i));
salto++;
// textSecuencia.append(".");
if(salto%60==0){
// textSecuencia.append("n");
secuencia+="n";
}
}
textSecuencia.append("Archivo guardadon");
fo.write(secuencia.getBytes());
fo.close();
}catch(IOException ex){
System.out.println("Error al escribir archivo");}
}
Estoy escribiendo un pequeño programa en java que carga usa secuencia de caracteres en una hashtable para poder cambiar caracteres en una posicion especifica de una manera rápida y comoda.
Mi problema surge al intentar guardar el contenido de la hashtable como secuencia de caracteres. si utilizo la funcion toString() me devuelve la secuencia pero cono comas separando cada caracter, si intento guardarlo con write object me guarda un monton de cosas aparte de los caracteres, y la unica forma que he encontrado es ir tomando el contenido de cada posicion del hashtable (mediante un loop for) y agregandolo en una string. El problema de este metodo es que para secuencias muy larga se hace muy lento a la hora de guardar un archivo. Alguna sugerencia de que otro sistema podrÃa probar????
Gracias
P.D. este es el codigo a modificar:
void mnGuardar_actionPerformed(ActionEvent e){
int salto=0;
String secuencia="";
fd.setMode(fd.SAVE);
fd.show();
if(fd.getFile()==null)return;
try{
FileOutputStream fo=new FileOutputStream(fd.getDirectory()+"\"+fd.getFile());
secuencia=">";
secuencia+=textnombre.getText()+"n";
textSecuencia.append("nGuardandon");
for (int i=0;i<datos.size();i++){
secuencia+=datos.get(new Integer(i));
salto++;
// textSecuencia.append(".");
if(salto%60==0){
// textSecuencia.append("n");
secuencia+="n";
}
}
textSecuencia.append("Archivo guardadon");
fo.write(secuencia.getBytes());
fo.close();
}catch(IOException ex){
System.out.println("Error al escribir archivo");}
}
Puedes probar a sustituir la Hashtable por un ArrayList y usar StringBuffer dentro del bucle for.
Por cada "secuencia+=datos.get(new Integer(i));" creas un nuevo Integer y un nuevo String
Yo probarÃa algo asÃ:
StringBuffer aux=new StringBuffer(secuencia);
for (int i=0;i<datos.size();i++){
aux.append((char)datos.get(i));
salto++;
// textSecuencia.append(".");
if(salto%60==0){
// textSecuencia.append("n");
aux.append('n');
}
con datos un arraylist de char (no de String)
También puedes probar con el método toString de la hashTable y s.replaceAll(",","") para quitar las comas.
Creo que el replaceAll no aparece hasta el JDK1.4
Saludos!
Por cada "secuencia+=datos.get(new Integer(i));" creas un nuevo Integer y un nuevo String
Yo probarÃa algo asÃ:
StringBuffer aux=new StringBuffer(secuencia);
for (int i=0;i<datos.size();i++){
aux.append((char)datos.get(i));
salto++;
// textSecuencia.append(".");
if(salto%60==0){
// textSecuencia.append("n");
aux.append('n');
}
con datos un arraylist de char (no de String)
También puedes probar con el método toString de la hashTable y s.replaceAll(",","") para quitar las comas.
Creo que el replaceAll no aparece hasta el JDK1.4
Saludos!