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 37 38 39 40 41 42
| int i; // variable temporaire de comptage
int ncol; // Nombre de colonnes
int nlignes; // Nombre de lignes
i = 0; // Initialisation initiale :-)
FileStream fs = new FileStream("data.dat", FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr = new StreamReader(fs);
string s = sr.ReadLine(); // Lit la première ligne
nlignes = 1;
// Recherche du nombre de colonnes, en comptant le nombre d'espaces
Regex exp = new Regex(@"\s", RegexOptions.Compiled); // definit une expression
MatchCollection matchList = exp.Matches(s); // matche l'expression sur la chaine s
ncol = matchList.Count; // compte le nombre d'occurences de l'espace
Console.WriteLine("Nombre de colonnes : " + ncol.ToString());
// Parcours du fichier à la recherche du nombre de lignes
// Je n'ai pas trouvé comment faire autrement car, sur un fichier texte
// de 137 Mo, parcourir 2 fois, c'est lourd !
while(s != null)
{
s = sr.ReadLine();
nlignes++;
}
sr.Close(); // Fermeture du Stream
fs.Close(); // Fermeture du fichier
// Création du tableau des données (floats)
float[][] f = new float[nlignes][ncol];
// On recommence sur le fichier ; ce n'est pas tres optimisé ...
FileStream fs = new FileStream("data.dat", FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr = new StreamReader(fs);
string s = sr.ReadLine(); // Lit la première ligne
etc. |
Partager