Selections de parties d'un très lourd fichier

Signaler
Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
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

Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
1
Vraiment personne ?
Toi là , oui toi au fond, tu ne saurais pas ?
Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
1
Up de la fin Octobre.
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
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!