Pregunta

Supongo que esto sonará loco, pero estoy leyendo desde un archivo, y parece que omite la primera línea del archivo.

¿Qué está pasando?

Aquí está la fuente:


    private void loadFile(String fileNPath)
    {
        StringBuilder currentFileContents = new StringBuilder();
        CharBuffer contentsBuffer = CharBuffer.allocate(65536);

        int status=0;
        try
        {
            BufferedReader in = new BufferedReader(new FileReader(fileNPath));

            while(status!=-1)
            {
                status=in.read(contentsBuffer);
                currentFileContents.append(contentsBuffer);
                contentsBuffer.clear();
            }

            System.out.println(currentFileContents.toString());
        }
        catch(FileNotFoundException n)
        {
            //Should be imposible
        }
        catch(IOException n)
        {
            n.printStackTrace(System.out);
        }

    }

Debe ser algo que estoy buscando.

Copié y pegé la fuente exacta, así que espero que esto también suceda para ti.

Gracias Caalip

¿Fue útil?

Solución

Usaría FileUtils.readFiletostring(archivo) que hace esto en una línea.

Sin embargo, cuando corro su Código en un archivo de texto Veo cada línea. Sospecho que el problema no está con su código.

Otros consejos

¿Hay alguna razón en particular por la que está leyendo el archivo como es?

Estás utilizando métodos de clase principal (BufferedReader no tiene read(CharBuffer) método, por ejemplo) y también ... el CharBuffer en sí mismo es un poco exagerado. Sospecho que el problema real es que no lo está usando correctamente (generalmente voltea y desagüe los objetos de buffer, pero tendría que tocar más para ver cómo esto termina manipulándolo)

Todo lo que necesita hacer para leer un archivo es:

StringBuilder currentFileContents = new StringBuilder();
try
{
    BufferedReader in = new BufferedReader(new FileReader(fileNPath));
    String line = null;
    while( (line = in.readline()) != null )
    {
        currentFileContents.append(line);
    }

    System.out.println(currentFileContents.toString());
}
catch(FileNotFoundException n)
{
    //Should be imposible
}
catch(IOException n)
{
    n.printStackTrace(System.out);
}

Esto parece un poco extraño. Intente cambiar su bloque de prueba a:

try
    {
        BufferedReader in = new BufferedReader(new FileReader(fileNPath));

        status=in.read(contentsBuffer.array(), 0, 65536);
        currentFileContents.append(contentsBuffer);

        System.out.println(currentFileContents.toString());
    }

No he ejecutado este código, pero dale una oportunidad.

Actualización: ejecuté su código y encontré el problema que describió. Ejecuté el código con mi revisión y funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top