Selections de parties d'un très lourd fichier

babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 - 10 sept. 2010 à 20:33
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 23 oct. 2010 à 08:02
Bonjour,

Le titres n'est certainement pas très explicite et je ne dois pas être dans la bonne section, je m'en excuse par avance.

Voilà, j'ai un énorme fichier de 10 Go.

J'aimerai prendre Go par Go et travailler dessus les uns à la suite des autres.
En fait j'aimerai mettre le 1er Go du fichier dans byte[], travailler dessus, puis le second Go du fichier dans byte[], travailler dessus... jusqu'au dernier Go.

BabaOrhumFile est le fichier de 10 Go.
FileStream StreamFichier = new FileStream(BabaOrhumFile, FileMode.Open, FileAccess.Read);
byte[] Fichier = new byte[StreamFichier.Length];

Une erreur apparait à la dernière ligne car le fichier est beaucoup trop grand/lourd.


Ce que je ne sais pas faire c'est prendre des parties du fichier.


Voilà, en espérant avoir été à peu près claire, je vous remercie de votre attention.

23 réponses

babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
13 oct. 2010 à 21:28
Vraiment personne ?
Toi là , oui toi au fond, tu ne saurais pas ?
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
22 oct. 2010 à 19:56
Up de la fin Octobre.
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
23 oct. 2010 à 08:02
Salut,

il y a une erreur dans la commande de lecture, remplace 'pos' par '0'
car ce parametre indique la position d'écriture dans le tableau, pas celle de lecture dans le fichier.

using (System.IO.StreamReader reader = new System.IO.StreamReader(BabaOrhumFile))
{
Char[] buffer = new Char[1024];
int readchar = 0;
while ((readchar = reader.Read(buffer, 0, 1024)) > 0)
{
// ton traitement
}
}


Mais je voudrais revenir sur la finalité du truc.
ton fichier est-il de type binaire ou texte (ascii, utf unicode)?
car si c'est du texte, alors il serait plus judicieux d'utiliser un StreamReader et un StringBuilder, puis un Regex pour ta recherche

Bob

C# is amazing, enjoy it!
0
Rejoignez-nous