IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Ecriture de centaines de fichiers


Sujet :

C#

  1. #1
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut Ecriture de centaines de fichiers
    Bonjour tout le monde !
    Soit un programme qui écrit :
    - 25 fichiers dans un répertoire local
    - 25 fichiers dans un répertoire distant
    - 25 fichiers dans un répertoire local

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    static void Main(string[] args)
        {
     
          string s;
          string dir1 = "C:\\temp\\testwritefiles\\test1";
          string dir2 = "C:\\temp\\testwritefiles\\test2";
          string dir3 = string.Concat("\\\\server\\temp\\test");
          try
          {
            for (int i = 0; i < 30; i++)
            {
              using (StreamWriter sw = new StreamWriter(string.Concat(dir1, "\\", args[0], "_", i.ToString(), ".log"), false, Encoding.Default))
              {
                s = string.Concat("Maître corbeau", Environment.NewLine, "sur un arbre perché", Environment.NewLine, "tenait dans son bec", Environment.NewLine, "un fromage");
                sw.Write(s);
                sw.Close();
              }
              using (StreamWriter sw = new StreamWriter(string.Concat(dir3, "\\", args[0], "_", i.ToString(), ".log"), false, Encoding.Default))
              {
                s = string.Concat("Maître corbeau", Environment.NewLine, "sur un arbre perché", Environment.NewLine, "tenait dans son bec", Environment.NewLine, "un fromage");
                sw.Write(s);
                sw.Close();
              }
              using (StreamWriter sw = new StreamWriter(string.Concat(dir2, "\\", args[0], "_", i.ToString(), ".log"), false, Encoding.Default))
              {
                s = string.Concat("Maître corbeau", Environment.NewLine, "sur un arbre perché", Environment.NewLine, "tenait dans son bec", Environment.NewLine, "un fromage");
                sw.Write(s);
                sw.Close();
              }
            }
          }
          catch (Exception ex)
          {
            using (StreamWriter sw = new StreamWriter(string.Concat(Path.GetDirectoryName(dir1), "\\", args[0], "_", "TestWriteFiles", ".log"), false, Encoding.Default))
            {
              sw.Write(ex.Message);
              sw.Close();
            }
          }
        }
    Soit un autre programme qui lance 20 fois ce programme avec un paramètre chaque fois différent afin de n'avoir aucun doublon de nom de fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0; i < 20; i++)
          {
            Utils.Shell(string.Concat(startupPath, "\\TestWriteFiles.exe"), i.ToString());
          }
    Si je lance cette bombe sans écrire les fichiers distants, ça joue.
    Si je les écrit, j'ai une erreur indiquant que le chemin réseau est refusé.

    Bon, je conçoit que ce petit test est fait pour faire péter la baraque et n'a aucun sens en soi.
    Sauf que j'ai une application qui tourne sur un serveur qui est installé sur une station WMWare et dont le réseau est relativement lent.
    Dans cette application, je dois écrire des fichiers d'échange pour des donnés ERP.
    En plus, j'écris des logs pour pouvoir surveiller le bon fonctionnement de la chose.
    Et j'ai eu de graves pertes de données :
    - des fichiers manquants
    - des lignes manquantes dans les fichiers

    J'ai résolu le problème en mettant un sleep après chaque appel du programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i = 0; i < 20; i++)
          {
            Utils.Shell(string.Concat(startupPath, "\\TestWriteFiles.exe"), i.ToString());
            Thread.Sleep(1000);
          }
    Je ne cherche pas une solution mais voudrais seulement savoir ce que vous en pensez.

    Bonne soirée à tous

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par ppphil Voir le message
    Sauf que j'ai une application qui tourne sur un serveur qui est installé sur une station WMWare et dont le réseau est relativement lent.
    Dans cette application, je dois écrire des fichiers d'échange pour des donnés ERP.
    Dans ces conditions, je pense qu'il est préférable d'écrire les fichiers en local et de les copier une fois écrits.

    Et j'ai eu de graves pertes de données :
    - des fichiers manquants
    - des lignes manquantes dans les fichiers
    Sans lever d'erreur ? c'est très surprenant ? tu fermes correctement tes fichiers ?

    J'ai résolu le problème en mettant un sleep après chaque appel du programme
    Rien que cela fait sooupçonner une loufoquerie dans le programme.

    Je ne cherche pas une solution mais voudrais seulement savoir ce que vous en pensez.
    Ce que je pense ? que la conception est à revoir de A à Z.

  3. #3
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Dans ces conditions, je pense qu'il est préférable d'écrire les fichiers en local et de les copier une fois écrits.
    Ca, ça m'intéresse.

Discussions similaires

  1. [C#]Ecriture/Suppression dans un fichier
    Par torNAdE dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/05/2006, 09h11
  2. ecriture/lecture sur un fichier FIFO en C++
    Par syagmur dans le forum C++
    Réponses: 2
    Dernier message: 20/03/2006, 18h44
  3. ecriture/lecture sur un fichier FIFO en PHP
    Par syagmur dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2006, 14h37
  4. Ecriture simultanée dans un fichier
    Par doudou34 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 30/09/2005, 14h26
  5. Ecriture et lecture de fichiers
    Par nozvad dans le forum Général Python
    Réponses: 4
    Dernier message: 12/10/2004, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo