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.
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ámetroCharset
, de esta manera:Esto creará un escáner que lee el archivo utilizando el juego de caracteres UTF-8, pero sin el BOM.