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 - 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

yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
10 sept. 2010 à 23:52
salut
il faudrait que le seche ce que souhaite faire du fichier
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
11 sept. 2010 à 00:33
hm hm tu veux plutôt dire :
"Il faudrait que je sache ce que tu veux faire du fichier", non ? (je taquine)

C'est ensuite pour pouvoir chercher et éventuellement trouver une suite de lettres et caractères par exemple "SAUPIQUET x3*-^", mais bon ça je sais faire.
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
11 sept. 2010 à 00:46
oki oui , defois je tape dans des positions pas catholique lool ! passons...

la dans ton cas , maintenant que je sais que tu veux faire une recherche le mieu est de faire du lignes / lignes

car decoupé suivant un tableau de X byte n'est pas edéaquta car tu a 90 % de chance de tomber sur les lignes coupé , et ca rendrait ta recherche erronée!

donc

            
using (System.IO.StreamReader reader = new System.IO.StreamReader(BabaOrhumFile, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
      String ligne = null;
      while ((ligne = reader.ReadLine()) != null)
      {
           // ton traitement
      }
}
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
11 sept. 2010 à 00:58
Merci.
Ligne par ligne serait une bonne idée effectivement s'il s'agissait d'un texte construit, mais il s'agit d'un fichier traité en hexadécimal donc c'est "une seule ligne" à lui tout seul. Donc ça ne va pas. (je corse les choses d'un coup ^^)

Il y aurait 10 coupes, sur plusieurs millions de caractères, faut vraiment pas avoir de bol de couper sur mon "SAUPIQUET x3*-^" (mot de 8 à 12 caractères/lettres).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
11 sept. 2010 à 01:23
alors


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

           pos += readchar;
      }
}


pi t'arrete de m'embetter, non mé hoo :)
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
11 sept. 2010 à 07:28
^^, merci je teste ça cette nuit ou demain, je pars à la mer aujourd'hui.

Bon week end et fait gaffe à la luxure luxation avec tes positions pas "très catholique".
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
12 sept. 2010 à 09:30
Bonjour,

J'ai essayé avec un "string path "bidon" et voilà le résultat :



[url=http://omega.mezimages.net/51fuaEL4cd6dzf.png]


Aurais-je loupé quelque chose ?

Merci.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
13 sept. 2010 à 12:04
Personne ?
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
14 sept. 2010 à 21:39
J'ai dit une connerie ?
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
15 sept. 2010 à 02:25
salut
enleve System.IO.FileMode.Open, System.IO.FileAccess.Read


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

           pos += readchar;
      }
}
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
16 sept. 2010 à 11:12
Bonjour et merci,

Je teste depuis hier soir, je n"'ai plus d'erreur sur cette ligne, cependant maintenant j'ai une erreur sur celle-ci :
while ((readchar = reader.Read(buffer, pos, 1024)) > 0)


:/

Une idée ?

Merci.

Signé : la boulet.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
17 sept. 2010 à 21:46
Voici l'erreur que j'ai :



Merci de votre aide passée et/ou future.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
19 sept. 2010 à 13:34
Bonjour,
Vraiment personne pour m'aider ?
Merci.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
22 sept. 2010 à 06:48
Ou alors une autre piste.
Merci.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
23 sept. 2010 à 20:23
Aidez-moi.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
25 sept. 2010 à 09:04
S'il vous plait.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
27 sept. 2010 à 10:39
Je vous en prie... :'(
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
1 oct. 2010 à 09:44
Personne vraiment ?


Peut-être que je prends un char[] trop grand ?

Char[] buffer = new Char[1024];
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
3 oct. 2010 à 19:17
Bah je tente des trucs sans succès :
Char[] buffer = new Char[512];
                    int pos = 0;
                    int readchar = 0;
                    while ((readchar = reader.Read(buffer, pos, 512)) > 0)
                    {

Donne encore :
Offset et length étaient hors limites pour ce tableau ou bien le nombre est supérieur au nombre d'éléments de l'index à la fin de la collection source.
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
9 oct. 2010 à 17:32
Personne ne peut m'aider svp ?
0
Rejoignez-nous