public void parse(Map map) {
        try {
            m_bufferReader = new BufferedReader(new FileReader(m_fileName));
            
            int[] sizes = new int[2];
            try {
                // On récupère les dimensions du labyrinthe dans le header du fichier.
                // Exception est lancée si le header n'est pas "standard".
                readHeader(sizes);
            } catch (IOException e) {
                System.out.println(e.getMessage());
                return;
            }
            
            // Une map est initialisée de taille (hauteur * 2 + 1, largeur * 2 + 1) avec des null.
            map.setSizes(sizes[0], sizes[1]);
            
            try {
                // On remplit le labyrinthe avec les vides et les murs.
                readLabyrinth(map);
            } catch (IOException e) {
                System.out.println(e.getMessage());
                return;
            }
            
            try {
                // On remplit le labyrinthe avec les informations des positions.
                readInformations(map);
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        } catch (FileNotFoundException e) {
            System.out.println("File not found: " + m_fileName);
        } finally {
            try {
                if (m_bufferReader != null)
                    m_bufferReader.close();
            } catch (IOException e) {
                System.out.println("Error while closing: " + m_fileName);
            }
        }
    }