Bonjour à toutes et à tous,

J'ai écrit une méthode pour transformer un fichier de 6000 lignes comportant chacune 6000 données, séparées par un "espace", représentant chacune une altitude sous forme de chaîne.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    public static int LitSRTM3() {
        BufferedReader reader = FCH.ouvreLect(FCH.dirCartes, "/srtm_38_03.asc");
        int[][] alti = new int[6000][6000];
        int la, lo;
        int nb = 0;
        int pDeb;
        int pFin;
        String line;
        String alt;
        try {
            for (int i = 0; i < 6; i++) // Suppression de l'en-tête
                reader.readLine();
            la = 0;
            while ((line = reader.readLine()) != null) {
                nb += 1;
                pDeb = 0;
                pFin = 0;
                lo = 0;
                while (pFin < line.length()) {
                    while (line.charAt(pFin) != ' ') {
                        pFin += 1;
                    }
                    alt = line.substring(pDeb, pFin);
                    alti[lo][la] = Integer.parseInt(alt);
                    pFin += 1;
                    pDeb = pFin;
                    lo += 1;
                }
                la += 1;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        FCH.clotLect(reader);
        return nb;
    }
Avec mon Samsung A41 qui n'est quand même pas un escargot, cela me coûte 34 secondes.

Cette durée est partagée à peu prés à part égale entre la conversion proprement dite :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    alti[lo][la] = Integer.parseInt(alt);
J'ai essayé d'autre méthode (Integer.decode() ; new Integer()) mais c'est encore pire.

C'est à propos de la partie exploration du fichier texte que je pose des questions. Ma méthode consiste à rechercher les espaces pour délimiter les chaînes puis à appliquer :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    alt = line.substring(pDeb, pFin);
pour les isoler.

N'y a-t-il pas plus rapide ?

Cordialement.

Pierre.