Fichier trop volumineux en c#

Résolu/Fermé
Laurent - 5 sept. 2006 à 18:24
 Robert - 6 sept. 2011 à 13:54
Bonjour,

Je tente d'importer un fichier plat en c#. je lis le fichier de façon séquentielle en utilisant un streamwriter.

Cependant, dès que la taille de mon fichier est trop importante (exemple : 4776 Ko), la page web plante et j'ai le message "Impossible d'afficher la page..."

Si je réduis la taille de mon fichier, cela fonctionne à nouveau.

Quelqu'un a-t-il une astuce pour ouvrir et lire de gros fichiers textes ?

Merci d'avance

Laurent.
A voir également:

11 réponses

j'ai trouvé, par défaut dans une appli web asp, la taille des fichiers à uploader est fixée à 4Mo maximum, il faut donc modifier cette taille dans le web.config dans la section System.web et ajouter...

<httpRuntime
executionTimeout="90"
maxRequestLength="8192"
/>

... pour 8Mo par exemple.
1
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 7 811
13 sept. 2006 à 11:11
Ok :-)
1
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 7 811
5 sept. 2006 à 23:16
Soit tu découpes le fichier à l'affichage en plusieurs page, soit tu mets un lien pour le télécharger mais tu ne l'affiches pas. Mais ca me surprendrait qu'un être humain s'amuse à lire 5mo de texte d'une traite, tu es sûr qu'il n'y a pas de pronblème ? Genre des trucs qu'il est inutile d'écrire ?

Bonne chance
0
Merci pour ta réponse mais je n'essaie pas d'afficher les données du fichier. Je veux juste récupérer les données qui y sont stockées (dans des tableaux), les interpréter et regénerer un autre fichier en sortie qui aura un format totalement différent.

Et le fichier fait bien dans les 5Mo, le volume de données est important. Il y a des restrictions de taille au niveau des fichiers en c# ?

Je dois absolument pouvoir traiter de gros fichiers !!! HELP !!!

Laurent.
0

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

Posez votre question
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 7 811
6 sept. 2006 à 11:56
Dans le cadre de mon travail ça m'arrive de charger des fichiers de plusieurs dizaines de mega en c++ et ça marche sans problème... Pour accélerer le chargement des données on utilise les serialization de la lib boost mais ça commence à être éloigné de ce que tu fais (ça stocke directement dans un binaire les structures de données).

Dans ton cas tu lis bien le fichier ligne par ligne par ligne, et tu complètes ta structure de donnée en vue de l'écrire différement ? Tu ne t'amuses pas par exemple à le stocker dans une chaîne de caractère ?

Bonne chance
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
6 sept. 2006 à 13:02
Salut,

Tu ne t'amuses pas par exemple à le stocker dans une chaîne de caractère ?

Ca sera une mauvaise idée, même en Perl ;)

lami20j
0
j'utilise le code suivant, mais il ne passe même pas par là, la page d'erreur s'affiche avant alors que si je réduis la taille de mon fichier il passe bien par mes lignes de code et tout se passe bien :

StreamReader sr = new StreamReader(p_nomFichier, System.Text.Encoding.GetEncoding("Windows-1252"));
// Open the file to read from.
string ligne;
bool flagEch = false;
Echantillon v_ech = null;
ArrayList listData = new ArrayList();
while ((ligne = sr.ReadLine()) != null)
{
if (ligne.Length == 0)
continue;

string [] listValeurLigne = ligne.Split(';');

if (listValeurLigne.Length!=1)
{
if (listValeurLigne[1].ToString().Equals("ECH"))
{
// mon code
}
}
}
0
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 7 811
6 sept. 2006 à 22:32
Je vois rien de choquant. Il faudrait voir à quel endroit précis du code ça plante, par exemple avec un debugger...
0
le problème c'est que lorsque je mets un point d'arret dès le clic sur mon bouton (qui lance le code du précédent message), il ne passe même pas par le point d'arret, il s'arrete avant.

je ne vois vraiment pas quoi faire...
0
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 7 811
7 sept. 2006 à 00:37
Ben il faut trouver où il bloque... Lance ton programme pas à pas au besoin... Une fois que tu auras trouvé la ligne ou ça bloque, il faut comprendre pourquoi ;-) Mais pour ça on t'aidera.
0
Le pb semble venir de mon filePicker car si j'inscris le nom de mon fichier en dur dans le programme, tout se passe bien.

une idée ?
0
Essaie avec System.Linq ;)
0