es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El PrintWriter está imprimiendo solamente la primera línea en el archivo de texto.

El cierre de PrintWriter se coloca en el bloque finally, por lo que lógicamente debería escribir todas las líneas existentes en el archivo de texto, como sugiere el siguiente código:

 public boolean updatecentre(String row, int cuid) throws IOException
{
    boolean updated = false;
    int dbcuid;
    String dbcname, dbcentre, dba1, dba2, dba3, vac1, dose1, vac2, dose2, vac3, dose3, dbstr;

    File F1 = new File("Centre.txt");
    File Ftc1 = new File("Temp.txt");
    FileWriter fw1 = new FileWriter(Ftc1, true);
    BufferedWriter bw1 = new BufferedWriter(fw1);
    PrintWriter pw1 = new PrintWriter(bw1);
    Scanner Sc1 = new Scanner(F1);
    Sc1.useDelimiter("[/\n]");
    try
    {
        while(Sc1.hasNext())
        {
            dbcuid = Sc1.nextInt();
            dbcname = Sc1.next();
            dba1 = Sc1.next();
            dba2 = Sc1.next();
            dba3 = Sc1.next();
            vac1 = Sc1.next();
            dose1 = Sc1.next();
            vac2 = Sc1.next();
            dose2 = Sc1.next();
            vac3 = Sc1.next();
            dose3 = Sc1.next();
            dbstr = dbcuid+"/"+dbcname+"/"+dba1+"/"+dba2+"/"+dba3+"/"+vac1+"/"+dose1+"/"+vac2+"/"+dose2+"/"+vac3+"/"+dose3;
            if(dbcuid == cuid)
            {
                pw1.print(row +"\n");
                updated = true;
            }
            else
            {
                pw1.print(dbstr+"\n");
            }
        }
    }
    catch(Exception e)
    {

    }
    finally
    {
        Sc1.close();
        pw1.flush();
        pw1.close();
        bw1.close();
        fw1.close();
        F1.delete();
        File dump = new File("Centre.txt");
        Ftc1.renameTo(dump);  
    }
    return updated;
}

Pero lo que hace ahora es que solo imprime la primera línea, las líneas siguientes no se imprimen al ejecutarlo, entonces ¿cuál es el problema aquí? Funcionaba bien ayer, pero de repente comenzó a aparecer este problema.

Contenido en el archivo de texto:

1/Axiata Arena Bukit Jalil/L2-E-10, Enterprise 4,/Technology Park Malaysia, Bukit Jalil,/57000, Kuala Lumpur/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
2/Titiwangsa Stadium/Jalan Tembeling,/Titiwangsa,/53200, Kuala Lumpur/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
3/Kompleks Sukan Pandamaran Klang/Padamaran,/Port Klang,/42000, Selangor/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
4/KPL Ampang Puteri Hospital/1, Jalan Mamanda 9,/Taman Dato Ahmad Razali,/68000 Ampang, Selangor/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
5/Mines Convention Centre/MIECC, Jalan Dulang,/Mines Wellness City, Seri Kembangan,/43300, Selangor/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema aquí podría estar relacionado con la codificación del archivo de texto. Ya que la clase PrintWriter utiliza la codificación de caracteres predeterminada de la plataforma, es posible que los caracteres en el archivo de texto no sean compatibles con la codificación utilizada por el PrintWriter.

    Para solucionar este problema, puedes intentar especificar la codificación de caracteres de manera explícita al crear el objeto PrintWriter. Por ejemplo, puedes utilizar el siguiente código:

    FileWriter fw1 = new FileWriter(Ftc1, true);
    BufferedWriter bw1 = new BufferedWriter(fw1);
    PrintWriter pw1 = new PrintWriter(new OutputStreamWriter(new FileOutputStream(Ftc1, true), "UTF-8"));
    

    Este código crea un objeto PrintWriter que utiliza la codificación de caracteres UTF-8, que es una codificación ampliamente utilizada para caracteres Unicode. Debes reemplazar “UTF-8” con la codificación de caracteres adecuada para tu archivo de texto si es diferente.

    Además, puedes verificar si hay errores o excepciones que se generan durante la ejecución de tu código agregando algunas declaraciones de registro de errores o manejo de errores. Esto puede ayudarte a identificar la fuente del problema y solucionarlo en consecuencia.

Comments are closed.