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.

Java imprime caracteres extraños al principio del archivo mientras se lee utilizando Scanner.

Mi código es el siguiente:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Movies {
public String rFile() {
try {
Scanner file = new Scanner(new File(“./file.txt”));
while(file.hasNextLine()) {
System.out.println(file.nextLine());
}
} catch (FileNotFoundException e) {
System.out.println(“¡Archivo no encontrado!”);
}
return “”;
}
}

public static void main(String[] args) {
Movies movies = new Movies();
movies.rFile();
}

}

Mi archivo file.txt es el siguiente:
1994 The Shawshank Redemption
1972 The Godfather
1974 The Godfather: Part II

La salida es la siguiente:
¡Archivo no encontrado!
1994 The Shawshank Redemption
1972 The Godfather
1974 The Godfather: Part II

No sé por qué imprime esos caracteres al principio.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Los caracteres al comienzo de la salida () se llaman Marca de Orden de Bytes (BOM, por sus siglas en inglés) y indican la codificación de texto del archivo. En este caso, parece que el archivo se codificó en UTF-8 con BOM.

    Para eliminar el BOM de la salida, puedes usar un constructor diferente de la clase Scanner que tome un parámetro Charset, de esta manera:

    Scanner file = new Scanner(new File("./file.txt"), "UTF-8");
    

    Esto creará un escáner que lee el archivo utilizando el juego de caracteres UTF-8, pero sin el BOM.

Comments are closed.